ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CexmcEnergyDepositDigitizer.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file CexmcEnergyDepositDigitizer.hh
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 /*
27  * =============================================================================
28  *
29  * Filename: CexmcEnergyDepositDigitizer.hh
30  *
31  * Description: digitizes of energy deposit in a single event
32  *
33  * Version: 1.0
34  * Created: 23.11.2009 14:14:47
35  * Revision: none
36  * Compiler: gcc
37  *
38  * Author: Alexey Radkov (),
39  * Company: PNPI
40  *
41  * =============================================================================
42  */
43 
44 #ifndef CEXMC_ENERGY_DEPOSIT_DIGITIZER_HH
45 #define CEXMC_ENERGY_DEPOSIT_DIGITIZER_HH
46 
47 #include <iosfwd>
48 #include <G4VDigitizerModule.hh>
49 #include <G4SystemOfUnits.hh>
52 #include "CexmcException.hh"
53 #include "CexmcCommon.hh"
54 
55 class G4String;
57 
58 
60 {
61  public:
62  explicit CexmcEnergyDepositDigitizer( const G4String & name );
63 
65 
66  public:
67  void Digitize( void );
68 
69  public:
70  G4double GetMonitorED( void ) const;
71 
72  G4double GetVetoCounterEDLeft( void ) const;
73 
74  G4double GetVetoCounterEDRight( void ) const;
75 
76  G4double GetCalorimeterEDLeft( void ) const;
77 
78  G4double GetCalorimeterEDRight( void ) const;
79 
80  G4int GetCalorimeterEDLeftMaxX( void ) const;
81 
82  G4int GetCalorimeterEDLeftMaxY( void ) const;
83 
84  G4int GetCalorimeterEDRightMaxX( void ) const;
85 
86  G4int GetCalorimeterEDRightMaxY( void ) const;
87 
89  GetCalorimeterEDLeftCollection( void ) const;
90 
92  GetCalorimeterEDRightCollection( void ) const;
93 
94  public:
95  G4bool MonitorHasTriggered( void ) const;
96 
97  G4bool HasTriggered( void ) const;
98 
99  public:
101  G4bool fromMessenger = true );
102 
104  G4bool fromMessenger = true );
105 
107  G4bool fromMessenger = true );
108 
109  void SetVetoCountersThreshold( G4double value );
110 
112  G4bool fromMessenger = true );
113 
115  G4bool fromMessenger = true );
116 
117  void SetCalorimetersThreshold( G4double value );
118 
121  G4bool fromMessenger = true );
122 
125  G4bool fromMessenger = true );
126 
128  G4bool fromMessenger = true );
129 
131  G4bool fromMessenger = true );
132 
133  void AddCrystalResolutionRange( G4double bottom, G4double top,
134  G4double value,
135  G4bool fromMessenger = true );
136 
137  void ClearCrystalResolutionData( G4bool fromMessenger = true );
138 
141 
142  G4double GetMonitorThreshold( void ) const;
143 
145 
147 
149 
151 
153  GetCalorimeterTriggerAlgorithm( void ) const;
154 
156  GetOuterCrystalsVetoAlgorithm( void ) const;
157 
159 
161 
163  GetCrystalResolutionData( void ) const;
164 
165  public:
166  G4bool IsOuterCrystal( G4int column, G4int row ) const;
167 
168  private:
169  void InitializeData( void );
170 
171  private:
173 
175 
177 
179 
181 
183 
185 
187 
189 
191 
193 
195 
197 
198  private:
200 
202 
204 
206 
208 
210 
212 
214 
216 
218 
220 
222 
224 
226 
228 
230 
231  private:
233 
235 
236  private:
238 
240 
241  private:
243 };
244 
245 
247 {
248  return monitorED;
249 }
250 
251 
253 {
254  return vetoCounterEDLeft;
255 }
256 
257 
259  const
260 {
261  return vetoCounterEDRight;
262 }
263 
264 
266 {
267  return calorimeterEDLeft;
268 }
269 
270 
272  const
273 {
274  return calorimeterEDRight;
275 }
276 
277 
279  const
280 {
281  return calorimeterEDLeftMaxX;
282 }
283 
284 
286  const
287 {
288  return calorimeterEDLeftMaxY;
289 }
290 
291 
293  const
294 {
295  return calorimeterEDRightMaxX;
296 }
297 
298 
300  const
301 {
302  return calorimeterEDRightMaxY;
303 }
304 
305 
308 {
310 }
311 
312 
315 {
317 }
318 
319 
321 {
322  return monitorHasTriggered;
323 }
324 
325 
327 {
328  return hasTriggered;
329 }
330 
331 
333  G4double value, G4bool fromMessenger )
334 {
335  if ( fromMessenger )
337  value < monitorEDThresholdRef );
338  else
340 
342 }
343 
344 
346  G4double value, G4bool fromMessenger )
347 {
348  if ( fromMessenger )
351  else
353 
355 }
356 
357 
359  G4double value, G4bool fromMessenger )
360 {
361  if ( fromMessenger )
364  else
366 
368 }
369 
370 
372  G4double value )
373 {
377 
380 }
381 
382 
384  G4double value, G4bool fromMessenger )
385 {
386  if ( fromMessenger )
389  else
391 
393 }
394 
395 
397  G4double value, G4bool fromMessenger )
398 {
399  if ( fromMessenger )
402  else
404 
406 }
407 
408 
410  G4double value )
411 {
415 
418 }
419 
420 
423 {
424  if ( fromMessenger )
428  value == calorimeterTriggerAlgorithmRef ) );
429  else
431 
433 }
434 
435 
438 {
439  if ( fromMessenger )
442  value == outerCrystalsVetoAlgorithmRef ) );
443  else
445 
447 }
448 
449 
451  G4double value, G4bool fromMessenger )
452 {
453  if ( fromMessenger )
456  else
458 
460 }
461 
462 
464  G4bool value, G4bool fromMessenger )
465 {
466  if ( fromMessenger )
468 
470 }
471 
472 
474  G4double bottom, G4double top,
475  G4double value, G4bool fromMessenger )
476 {
477  if ( fromMessenger )
479 
480  /* range boundaries are given in GeV */
482  bottom * GeV, top * GeV, value ) );
483 }
484 
485 
487  G4bool fromMessenger )
488 {
489  if ( fromMessenger )
491 
492  crystalResolutionData.clear();
493 }
494 
495 
498 {
501 }
502 
503 
505  G4int row ) const
506 {
507  return column == 0 || column == nCrystalsInRow - 1 ||
508  row == 0 || row == nCrystalsInColumn - 1;
509 }
510 
511 
513 {
514  return monitorEDThreshold;
515 }
516 
517 
519  void ) const
520 {
522 }
523 
524 
526  void ) const
527 {
529 }
530 
531 
533  void ) const
534 {
536 }
537 
538 
540  void ) const
541 {
543 }
544 
545 
548  void ) const
549 {
551 }
552 
553 
556  void ) const
557 {
559 }
560 
561 
563  void ) const
564 {
566 }
567 
568 
570  void ) const
571 {
573 }
574 
575 
578 {
579  return crystalResolutionData;
580 }
581 
582 
583 std::ostream & operator<<( std::ostream & out,
584  const CexmcEnergyDepositCalorimeterCollection & edCollection );
585 
586 
587 #endif
588