00001 #ifndef LaserAlignmentSimulation_LaserAlignmentSimulation_H 00002 #define LaserAlignmentSimulation_LaserAlignmentSimulation_H 00003 00012 #include "SimG4Core/Watcher/interface/SimWatcher.h" 00013 00014 #include "SimG4Core/Notification/interface/Observer.h" 00015 00016 // own classes 00017 #include "Alignment/LaserAlignmentSimulation/interface/MaterialProperties.h" 00018 #include "Alignment/LaserAlignmentSimulation/interface/LaserPrimaryGeneratorAction.h" 00019 #include "Alignment/LaserAlignmentSimulation/interface/LaserSteppingAction.h" 00020 00021 #include <map> 00022 #include <iostream> 00023 00024 // Geant4 includes 00025 00026 00027 class BeginOfRun; 00028 class EndOfRun; 00029 class BeginOfEvent; 00030 class EndOfEvent; 00031 class BeginOfTrack; 00032 class EndOfTrack; 00033 class G4Step; 00034 00035 class G4Timer; 00036 00037 class EventAction; 00038 class RunAction; 00039 class SteppingAction; 00040 class TrackingAction; 00041 00042 class LaserAlignmentSimulation : public Observer<const BeginOfRun *>, 00043 public Observer<const BeginOfEvent *>, 00044 public Observer<const G4Step *>, 00045 public Observer<const EndOfEvent *>, 00046 public Observer<const EndOfRun *>, 00047 public Observer<const BeginOfTrack *>, 00048 public Observer<const EndOfTrack *>, 00049 public SimWatcher 00050 { 00051 public: 00053 explicit LaserAlignmentSimulation(edm::ParameterSet const & theConf); 00055 virtual ~LaserAlignmentSimulation(); 00056 00057 /* private: */ 00059 void update(const BeginOfRun * myRun); 00061 void update(const BeginOfEvent * myEvent); 00063 void update(const G4Step * myStep); 00065 void update(const EndOfEvent * myEvent); 00067 void update(const EndOfRun * myRun); 00069 void update(const BeginOfTrack * myTrack); 00071 void update(const EndOfTrack * myTrack); 00072 00073 private: 00074 int theDebugLevel; 00075 double theEnergyLossScalingFactor; 00076 int theMPDebug; 00077 double theSiAbsLengthScale; 00078 00079 private: 00080 G4Timer * theTimer; 00081 MaterialProperties * theMaterialProperties; 00082 LaserPrimaryGeneratorAction * thePrimaryGenerator; 00083 LaserSteppingAction * theSteppingAction; 00084 00085 int theBarrelHits; 00086 int theEndcapHits; 00087 00088 edm::ParameterSet theParameterSet; 00089 /* TrackerG4SimHitNumberingScheme theNumberingScheme; */ 00090 }; 00091 00092 #endif