]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/Upgrade/AliToyMCEventGenerator.h
Updated drawing style
[u/mrichter/AliRoot.git] / TPC / Upgrade / AliToyMCEventGenerator.h
index f31774d7af810ca877afb4c761c6d2a54a56750f..224dd31fc018ad9921c6ace1dbb1789c5fe6affe 100644 (file)
@@ -7,23 +7,74 @@ class TFile;
 class TTree;
 
 class AliTPCParam;
-class AliTPCSpaceCharge3D;
+class AliTPCCorrection;
+class AliTrackPointArray;
 
 class AliToyMCTrack;
 class AliToyMCEvent;
 
 class AliToyMCEventGenerator : public TObject {
  public:
+   enum EGasType {
+     kNeCO2_9010=0,
+     kNeCO2N2_90105
+   };
+
+  enum EEpsilon {
+    kEps5=0,
+    kEps10,
+    kEps20,
+    kEps25,
+    kEps30,
+    kEps35,
+    kEps40
+  };
+
+  enum ECollRate {
+    k50kHz = 0
+  };
+
+  enum ECorrection {
+    kLookup=0,
+    kSpaceChargeFile
+  };
+  
   AliToyMCEventGenerator();
   AliToyMCEventGenerator(const AliToyMCEventGenerator &gen);
   virtual ~AliToyMCEventGenerator();
 
   virtual AliToyMCEvent* Generate(Double_t time) = 0;
 
-  Bool_t DistortTrack(AliToyMCTrack &trackIn, Double_t t0);
-
+  Bool_t DistortTrack(AliToyMCTrack &trackIn, Double_t t0=0);
+  void MakeITSClusters(AliToyMCTrack &trackIn/*, Double_t t0*/);
+  void MakeTRDClusters(AliToyMCTrack &trackIn/*, Double_t t0*/);
+  void MakeTPCClusters(AliToyMCTrack &trackIn, Double_t t0);
+  void CreateSpacePoints(AliToyMCTrack &trackIn,
+                        AliTrackPointArray &arrUdist,
+                        AliTrackPointArray &arrDist);
+  void SetPoint(Float_t xyz[3], Float_t sigmaY, Float_t sigmaZ, AliTrackPoint &point);
+  void ConvertTrackPointsToLocalClusters(AliTrackPointArray &arrPoints, AliToyMCTrack &tr, Double_t t0, Int_t type);
+  Bool_t SetupCluster(AliTPCclusterMI &tempCl, Float_t xyz[3], Int_t sec, Double_t t0);
+  
   void SetOutputFileName(const char* file) { fOutputFileName=file; }
   const char* GetOutputFileName()    const { return fOutputFileName.Data(); }
+
+  void SetSpaceCharge(EEpsilon epsilon, EGasType gasType=kNeCO2_9010, ECollRate collRate=k50kHz, ECorrection corrType=kLookup);
+  void SetSpaceChargeFile(const char* file) { fCorrectionFile=file; }
+  
+  Int_t GetSector(Float_t xyz[3]);
+
+  void InitSpaceCharge();
+
+  void SetStepCorrection(Bool_t step=kTRUE) { fUseStepCorrection=step;   }
+  Bool_t GetStepCorrection() const          { return fUseStepCorrection; }
+
+  void SetUseMaterialBudget(Bool_t use) { fUseMaterialBudget=use;    }
+  Bool_t GetUseMaterialBudget() const   { return fUseMaterialBudget; }
+
+  void SetIsLaser(Bool_t use) { fIsLaser=use;    }
+  Bool_t GetIsLaser() const   { return fIsLaser; }
+  
  protected:
   AliTPCParam *fTPCParam;
   AliToyMCEvent *fEvent;
@@ -31,15 +82,23 @@ class AliToyMCEventGenerator : public TObject {
   Bool_t ConnectOutputFile();
   Bool_t CloseOutputFile();
   void FillTree();
+
+  UInt_t fCurrentTrack;                  // unique track id within the current event generation
+
   
  private:
   AliToyMCEventGenerator& operator= (const AliToyMCEventGenerator& );
    
-  AliTPCSpaceCharge3D *fSpaceCharge;
+  AliTPCCorrection *fTPCCorrection;
 
+  TString fCorrectionFile;
   TString fOutputFileName;
   TFile   *fOutFile;
   TTree   *fOutTree;
+
+  Bool_t fUseStepCorrection;
+  Bool_t fUseMaterialBudget;
+  Bool_t fIsLaser;
   
   ClassDef(AliToyMCEventGenerator, 1)