73becd496fbf5c890b6f46a74df0b0ef1ce9803d
[u/mrichter/AliRoot.git] / TPC / Upgrade / AliToyMCEventGenerator.h
1 #ifndef AliToyMCEventGenerator_H
2 #define AliToyMCEventGenerator_H
3
4 #include <TString.h>
5
6 class TFile;
7 class TTree;
8
9 class AliTPCParam;
10 class AliTPCCorrection;
11 class AliTrackPointArray;
12
13 class AliToyMCTrack;
14 class AliToyMCEvent;
15
16 class AliToyMCEventGenerator : public TObject {
17  public:
18    enum EGasType {
19      kNeCO2_9010=0
20   };
21
22   enum EEpsilon {
23     kEps5=0,
24     kEps10,
25     kEps20
26   };
27
28   enum ECollRate {
29     k50kHz = 0
30   };
31
32   enum ECorrection {
33     kLookup=0,
34     kSpaceChargeFile
35   };
36   
37   AliToyMCEventGenerator();
38   AliToyMCEventGenerator(const AliToyMCEventGenerator &gen);
39   virtual ~AliToyMCEventGenerator();
40
41   virtual AliToyMCEvent* Generate(Double_t time) = 0;
42
43   Bool_t DistortTrack(AliToyMCTrack &trackIn, Double_t t0=0);
44   void MakeITSClusters(AliToyMCTrack &trackIn/*, Double_t t0*/);
45   void MakeTRDClusters(AliToyMCTrack &trackIn/*, Double_t t0*/);
46   void MakeTPCClusters(AliToyMCTrack &trackIn, Double_t t0);
47   void CreateSpacePoints(AliToyMCTrack &trackIn,
48                         AliTrackPointArray &arrUdist,
49                         AliTrackPointArray &arrDist);
50   void SetPoint(Float_t xyz[3], Float_t sigmaY, Float_t sigmaZ, AliTrackPoint &point);
51   void ConvertTrackPointsToLocalClusters(AliTrackPointArray &arrPoints, AliToyMCTrack &tr, Double_t t0, Int_t type);
52   Bool_t SetupCluster(AliTPCclusterMI &tempCl, Float_t xyz[3], Int_t sec, Double_t t0);
53   
54   void SetOutputFileName(const char* file) { fOutputFileName=file; }
55   const char* GetOutputFileName()    const { return fOutputFileName.Data(); }
56
57   void SetSpaceCharge(EEpsilon epsilon, EGasType gasType=kNeCO2_9010, ECollRate collRate=k50kHz, ECorrection corrType=kLookup);
58   void SetSpaceChargeFile(const char* file) { fCorrectionFile=file; }
59   
60   Int_t GetSector(Float_t xyz[3]);
61
62   void InitSpaceCharge();
63
64   void SetStepCorrection(Bool_t step=kTRUE) { fUseStepCorrection=step;   }
65   Bool_t GetStepCorrection() const          { return fUseStepCorrection; }
66
67   void SetUseMaterialBudget(Bool_t use) { fUseMaterialBudget=use;    }
68   Bool_t GetUseMaterialBudget() const   { return fUseMaterialBudget; }
69
70   void SetIsLaser(Bool_t use) { fIsLaser=use;    }
71   Bool_t GetIsLaser() const   { return fIsLaser; }
72   
73  protected:
74   AliTPCParam *fTPCParam;
75   AliToyMCEvent *fEvent;
76   
77   Bool_t ConnectOutputFile();
78   Bool_t CloseOutputFile();
79   void FillTree();
80
81   UInt_t fCurrentTrack;                  // unique track id within the current event generation
82
83   
84  private:
85   AliToyMCEventGenerator& operator= (const AliToyMCEventGenerator& );
86    
87   AliTPCCorrection *fTPCCorrection;
88
89   TString fCorrectionFile;
90   TString fOutputFileName;
91   TFile   *fOutFile;
92   TTree   *fOutTree;
93
94   Bool_t fUseStepCorrection;
95   Bool_t fUseMaterialBudget;
96   Bool_t fIsLaser;
97   
98   ClassDef(AliToyMCEventGenerator, 1)
99      
100 };
101
102 #endif
103