1 #ifndef AliToyMCEventGenerator_H
2 #define AliToyMCEventGenerator_H
11 class AliTPCCorrection;
12 class AliTrackPointArray;
17 class AliToyMCEventGenerator : public TObject {
43 AliToyMCEventGenerator();
44 AliToyMCEventGenerator(const AliToyMCEventGenerator &gen);
45 virtual ~AliToyMCEventGenerator();
47 virtual AliToyMCEvent* Generate(Double_t time) = 0;
49 Bool_t DistortTrack(AliToyMCTrack &trackIn, Double_t t0=0);
50 void MakeITSClusters(AliToyMCTrack &trackIn/*, Double_t t0*/);
51 void MakeTRDClusters(AliToyMCTrack &trackIn/*, Double_t t0*/);
52 void MakeTPCClusters(AliToyMCTrack &trackIn, Double_t t0);
53 void CreateSpacePoints(AliToyMCTrack &trackIn,
54 AliTrackPointArray &arrUdist,
55 AliTrackPointArray &arrDist);
56 void SetPoint(Float_t xyz[3], Float_t sigmaY, Float_t sigmaZ, AliTrackPoint &point);
57 void ConvertTrackPointsToLocalClusters(AliTrackPointArray &arrPoints, AliToyMCTrack &tr, Double_t t0, Int_t type);
58 Bool_t SetupCluster(AliTPCclusterMI &tempCl, Float_t xyz[3], Int_t sec, Double_t t0);
60 void SetOutputFileName(const char* file) { fOutputFileName=file; }
61 const char* GetOutputFileName() const { return fOutputFileName.Data(); }
63 void SetSpaceCharge(EEpsilon epsilon, EGasType gasType=kNeCO2_9010, ECollRate collRate=k50kHz, ECorrection corrType=kLookup);
64 void SetSpaceChargeFile(const char* file) { fCorrectionFile=file; }
66 Int_t GetSector(Float_t xyz[3]);
68 void InitSpaceCharge();
70 void SetStepCorrection(Bool_t step=kTRUE) { fUseStepCorrection=step; }
71 Bool_t GetStepCorrection() const { return fUseStepCorrection; }
73 void SetUseMaterialBudget(Bool_t use) { fUseMaterialBudget=use; }
74 Bool_t GetUseMaterialBudget() const { return fUseMaterialBudget; }
76 void SetIsLaser(Bool_t use) { fIsLaser=use; }
77 Bool_t GetIsLaser() const { return fIsLaser; }
79 void SetSCListFile(const char* file) { fSCListFile=file; }
80 const char* GetSCListFile() const { return fSCListFile.Data(); }
81 void SetPrereadSCList(Bool_t b) { fPrereadSCList=b; }
82 Bool_t GetPrereadSCList() const { return fPrereadSCList; }
83 Bool_t HasSCList() const { return !fSCListFile.IsNull(); }
85 static Float_t GetSCScalingFactor(AliTPCCorrection *corr, AliTPCCorrection *averageCorr, Float_t &chi2);
88 AliTPCParam *fTPCParam; //! TPC params
89 AliToyMCEvent *fEvent; //! Toy event
91 Bool_t ConnectOutputFile();
92 Bool_t CloseOutputFile();
94 void IterateSC(Int_t ipos=-1);
96 UInt_t fCurrentTrack; // unique track id within the current event generation
100 AliToyMCEventGenerator& operator= (const AliToyMCEventGenerator& );
102 AliTPCCorrection *fTPCCorrection; //! distortion correction
103 AliTPCCorrection *fTPCCorrectionAv; //! average distortion correction
105 TObjArray *fSCList; //! list with
106 TString fSCListFile; // file with a list of space charge files
107 TString fCorrectionFile; // name of a sinfle SC file
108 TString fOutputFileName; // name of the output file
109 TFile *fOutFile; //! output file
110 TTree *fOutTree; //! output tree
112 Bool_t fUseStepCorrection; // use integralDz method?
113 Bool_t fUseMaterialBudget; // use material budget in tracking?
114 Bool_t fIsLaser; // is a laser event?
115 Bool_t fPrereadSCList; // preread all SC files from the SC list
117 void SetCorrectionFromFile(const TString& file, AliTPCCorrection* &corr);
118 void InitSpaceChargeList();
119 void SetSCScalingFactor();
121 ClassDef(AliToyMCEventGenerator, 1)