/** * @file * @author Dmytro Kresan * @author Christian Simon * @since 2006-06-04/2018-11-23 */ #ifndef CBMTOFUNIGENGENERATOR_H #define CBMTOFUNIGENGENERATOR_H 1 #include "TString.h" #include "FairGenerator.h" #include class TFile; class TChain; class UEvent; class URun; class FairPrimaryGenerator; class CbmTarget; class TF1; /** * @brief Class to read UNIGEN files for ToF beamtime simulations * @author Dmytro Kresan * @author Christian Simon * @since 2006-06-04/2018-11-23 * @version 1.0 * @details based on class 'generators/CbmUnigenGenerator' */ class CbmTofUnigenGenerator : public FairGenerator { private: Int_t fEvents; //! Current event number Int_t fMaxEvents; //! Total number of events in the input chain TFile *fInputFile; //! Input file TString fFileName; //! Input file Name TChain *fInChain; //! Input chain std::list fInputChainList; //! Input chain file name list UEvent *fEvent; //! Input event URun *fRun; //! Input run Bool_t fCM; //! CM flag Double_t fBetaCM; //! CM velocity Double_t fGammaCM; //! CM gamma factor Double_t fBetaProj; //! Projectile velocity CbmTarget* fTarget; //! Pointer to CbmTarget Double_t fTargetZPosition; //! Target z position Double_t fTargetZLength; //! Target z length Double_t fBeamSigmaX; //! Beam width (Gaussian) in x [cm] Double_t fBeamSigmaY; //! Beam width (Gaussian) in y [cm] Double_t fCollZProb; //! Collision probability in z Bool_t fSmearVertexXY; //! Flag for uniformly rectangular vertex smearing in xy Bool_t fSmearGausVertexXY; //! Flag for gaus vertex smearing in xy Bool_t fSmearVertexZ; //! Flag for uniform vertex smearing in z Bool_t fSmearExpVertexZ; //! Flag for exponential vertex smearing in z TF1* fSampleZPosition; //! Pointer to sampling function of collision z position Bool_t fAutoCorrectBeam; //! Flag for beam profile auto-correction in xy Bool_t fAllGeantinos; //! Flag for primary transformation into geantinos prior to transport void CloseInputFile(); void CloseInputChain(); CbmTofUnigenGenerator(const CbmTofUnigenGenerator&); CbmTofUnigenGenerator& operator=(const CbmTofUnigenGenerator&); public: CbmTofUnigenGenerator(); CbmTofUnigenGenerator(TString fileName); virtual ~CbmTofUnigenGenerator(); /** Add the file 'FileName' to the input 'TChain'. ** @param FileName file name **/ void AddFile(const TString& FileName); /** Add all files matching 'fileNameWildCard' in directory 'directoryName' ** to the input 'TChain'. ** @param directoryName directory name ** @param fileNameWildCard wild card identifier ('TRegexp') **/ void AddPath(const TString& directoryName, const TString& fileNameWildCard); /** Set a pointer to the CbmTarget used in the MC simulation ** @param target pointer to target **/ void SetTarget(CbmTarget* target) { fTarget = target; } /** Set beam width in x. *@param beamSigmaX Beam width in x **/ void SetBeamSigmaX(Double_t beamSigmaX) { fBeamSigmaX = beamSigmaX; } /** Set beam width in y. *@param beamSigmaY Beam width in y **/ void SetBeamSigmaY(Double_t beamSigmaY) { fBeamSigmaY = beamSigmaY; } /** Set collision probability in z. *@param collProbZ Collision probability in z **/ void SetCollisionProbabilityZ(Double_t collProbZ); /** Enable uniformly rectangular vertex smearing in xy direction. *@param flag flag to enable/disable uniformly rectangular xy vertex smearing **/ void SmearVertexXY(Bool_t flag); /** Enable Gaussian vertex smearing in xy direction. *@param flag flag to enable/disable Gaussian xy vertex smearing **/ void SmearGausVertexXY(Bool_t flag); /** Enable uniform vertex smearing in z direction. *@param flag flag to enable/disable uniform z vertex smearing **/ void SmearVertexZ(Bool_t flag); /** Enable exponential vertex smearing in z direction. *@param flag flag to enable/disable exponential z vertex smearing **/ void SmearExpVertexZ(Bool_t flag); /** Enable beam profile auto-correction xy. *@param flag flag to enable/disable beam profile auto-correction **/ void SetAutoCorrectBeam(Bool_t flag) { fAutoCorrectBeam = flag; } /** Transform all primaries into geantinos. *@param flag flag to transform all primaries from the seed into geantinos **/ void SetAllGeantinos(Bool_t flag) { fAllGeantinos = flag; } virtual Bool_t Init(); virtual Bool_t ReadEvent(FairPrimaryGenerator* primGen); ClassDef(CbmTofUnigenGenerator, 0); }; #endif