/** * @file * @author Christian Simon * @since 2017-07-18 */ #ifndef CBMTOFFLOODILLUMINATOR_H #define CBMTOFFLOODILLUMINATOR_H 1 #include "FairGenerator.h" #include "TString.h" class FairPrimaryGenerator; class TGeoNode; class TGeoPhysicalNode; class CbmTarget; /** * @brief ... * @author Christian Simon * @since 2017-07-18 * @version 1.0 * @details ... */ class CbmTofFloodIlluminator : public FairGenerator { public: CbmTofFloodIlluminator(); virtual ~CbmTofFloodIlluminator(); void SetPDGType(Int_t iPDGType) {fiPDGType = iPDGType;} void SetMomentum(Double_t dMomentum); void SetCounter(Int_t iModuleType, Int_t iModuleIndex, Int_t iCounterIndex); void SetWindow(Double_t dXLow = -1., Double_t dXHigh = -1., Double_t dYLow = -1., Double_t dYHigh = -1., Double_t dCenterX = 0., Double_t dCenterY = 0.); void SetXYPlaneVertex(Bool_t bXYPlane = kTRUE) {fbXYPlaneVertex = bXYPlane;} void SetOriginVertex(Bool_t bOrigin = kTRUE) {fbOriginVertex = bOrigin;} void SetShiftWindowToYZPlane(Bool_t bShift = kTRUE) {fbShiftWindowToYZPlane = bShift;} void SetSmearGausBeamOnTarget(Bool_t bSmear = kTRUE) {fbSmearGausBeamOnTarget = bSmear;} void SetTarget(CbmTarget* tTarget) {fTarget = tTarget;} virtual Bool_t Init(); virtual Bool_t ReadEvent(FairPrimaryGenerator* primGen); protected: private: CbmTofFloodIlluminator(const CbmTofFloodIlluminator&); CbmTofFloodIlluminator& operator=(const CbmTofFloodIlluminator&); Bool_t FindIlluminationNode(); void ExpandNode(TGeoNode* tMotherNode); Int_t fiPDGType; Double_t fdMomentum; // [GeV] Int_t fiModuleType; Int_t fiModuleIndex; Int_t fiCounterIndex; Double_t fdWindowXLow; // [cm] Double_t fdWindowXHigh; // [cm] Double_t fdWindowYLow; // [cm] Double_t fdWindowYHigh; // [cm] Double_t fdCenterX; // [cm] Double_t fdCenterY; // [cm] Double_t fdIlluminationXLow; // [cm] Double_t fdIlluminationXHigh; // [cm] Double_t fdIlluminationYLow; // [cm] Double_t fdIlluminationYHigh; // [cm] Bool_t fbIsInitialized; TString fTofNodePath; TString fCurrentNodePath; Int_t fiCurrentModuleType; Int_t fiCurrentModuleIndex; Int_t fiCurrentCounterIndex; TGeoNode* fIlluminationNode; TGeoPhysicalNode* fIlluminationPN; Int_t fiNEvents; Bool_t fbXYPlaneVertex; Bool_t fbOriginVertex; Bool_t fbShiftWindowToYZPlane; Bool_t fbSmearGausBeamOnTarget; CbmTarget* fTarget; ClassDef(CbmTofFloodIlluminator, 0); }; #endif