ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CexmcEventAction.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file CexmcEventAction.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: CexmcEventAction.hh
30  *
31  * Description: event action
32  *
33  * Version: 1.0
34  * Created: 27.10.2009 22:41:29
35  * Revision: none
36  * Compiler: gcc
37  *
38  * Author: Alexey Radkov (),
39  * Company: PNPI
40  *
41  * =============================================================================
42  */
43 
44 #ifndef CEXMC_EVENT_ACTION_HH
45 #define CEXMC_EVENT_ACTION_HH
46 
47 #include <G4UserEventAction.hh>
48 #include "CexmcAngularRange.hh"
49 
50 class G4Event;
59 
60 
62 {
63  public:
65  G4int verbose = 0 );
66 
67  virtual ~CexmcEventAction();
68 
69  public:
70  void BeginOfEventAction( const G4Event * event );
71 
72  void EndOfEventAction( const G4Event * event );
73 
74  public:
75  void BeamParticleChangeHook( void );
76 
78 
79  void SetVerboseDrawLevel( G4int value );
80 
82 
83  private:
85  const CexmcAngularRangeList & angularRanges,
86  const CexmcAngularRange & angularGap ) const;
87 
88 #ifdef CEXMC_USE_ROOT
89  void FillEDTHistos( const CexmcEnergyDepositStore * edStore,
90  const CexmcAngularRangeList & triggeredAngularRanges ) const;
91 
92  void FillTPTHistos( const CexmcTrackPointsStore * tpStore,
93  const CexmcProductionModelData & pmData,
94  const CexmcAngularRangeList & triggeredAngularRanges ) const;
95 
96  void FillRTHistos( G4bool reconstructorHasFullTrigger,
97  const CexmcEnergyDepositStore * edStore,
98  const CexmcTrackPointsStore * tpStore,
99  const CexmcProductionModelData & pmData,
100  const CexmcAngularRangeList & triggeredAngularRanges ) const;
101 #endif
102 
103  void DrawTrajectories( const G4Event * event );
104 
105  void DrawTrackPoints( const CexmcTrackPointsStore * tpStore ) const;
106 
107  void DrawReconstructionData( void );
108 
109  void UpdateRunHits( const CexmcAngularRangeList & aRangesReal,
110  const CexmcAngularRangeList & aRangesRec,
111  G4bool tpDigitizerHasTriggered,
112  G4bool edDigitizerHasTriggered,
113  G4bool edDigitizerMonitorHasTriggered,
114  G4bool reconstructorHasTriggered,
115  const CexmcAngularRange & aGap );
116 
117 #ifdef CEXMC_USE_PERSISTENCY
118  void SaveEvent( const G4Event * event,
119  G4bool edDigitizerMonitorHasTriggered,
120  const CexmcEnergyDepositStore * edStore,
121  const CexmcTrackPointsStore * tpStore,
122  const CexmcProductionModelData & pmData );
123 
124  void SaveEventFast( const G4Event * event,
125  G4bool tpDigitizerHasTriggered,
126  G4bool edDigitizerHasTriggered,
127  G4bool edDigitizerMonitorHasTriggered,
128  G4double opCosThetaSCM );
129 #endif
130 
131  public:
133  const CexmcEnergyDepositDigitizer * digitizer );
134 
136  const CexmcTrackPointsDigitizer * digitizer );
137 
138  static void PrintEnergyDeposit(
139  const CexmcEnergyDepositStore * edStore );
140 
141  static void PrintTrackPoints(
142  const CexmcTrackPointsStore * tpStore );
143 
144  static void PrintProductionModelData(
145  const CexmcAngularRangeList & angularRanges,
146  const CexmcProductionModelData & pmData );
147 
148  private:
150 
152 
153 #ifdef CEXMC_USE_ROOT
154  G4double opKinEnergy;
155 #endif
156 
157  private:
159 
161 
163 };
164 
165 
167 {
168  verbose = value;
169 }
170 
171 
173 {
174  verboseDraw = value;
175 }
176 
177 
180 {
181  return reconstructor;
182 }
183 
184 
185 #endif
186