]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPC.h
Processing of many events possible now
[u/mrichter/AliRoot.git] / TPC / AliTPC.h
index a04870872b1c41506230e7bf86f7c4cea1fd43a1..13a6e35111afed0e570b3898abfd0e4abb801288 100644 (file)
 #include "AliDetector.h"
 #include "AliHit.h" 
 #include "AliDigit.h" 
-#include <TMatrix.h>
-#include <TTree.h>
-#include <TClonesArray.h>
 
-class TFile;
 
-class AliTPCParam;
+class TMatrix;
+class TTree;
 
+class TFile;
+class AliTPCParam;
 class AliTPCDigitsArray;
 class AliTPCClustersArray;
+class AliTPCTrackHits; // M.I.
 
 class AliTPC : public AliDetector {
 protected:
+  Int_t          fDefaults;
   Int_t          fSens;             // ISENS
   Int_t          fSecAL;            // Upper sector selector
   Int_t          fSecAU;            // Lower sector selector
@@ -31,9 +32,13 @@ protected:
   Int_t          fSecUps[12];       // List of upper sectors selected
   Int_t          fNsectors;         // Number of sectors in TPC
   //MI changes
-  AliTPCDigitsArray * fDigitsArray;              //detector digit object  
-  AliTPCClustersArray * fClustersArray; //detector cluster object
-  AliTPCParam *fTPCParam;
+  AliTPCDigitsArray * fDigitsArray;              //!detector digit object  
+  AliTPCClustersArray * fClustersArray; //!detector cluster object
+  AliTPCParam *fTPCParam;           // pointer to TPC parameters 
+  AliTPCTrackHits *fTrackHits;      //!hits for given track M.I.
+  Int_t  fHitType; // if fNewHit = 1 old data structure if 2 new hits
+  //  3 both types  
+  Int_t fDigitsSwitch; // digits type, 0->normal, 1->summable
 
   //MK changes
 
@@ -51,18 +56,20 @@ public:
   virtual void  BuildGeometry();
   virtual void  CreateGeometry() {}
   virtual void  CreateMaterials();
-  virtual void  Hits2Clusters(TFile *of);
+  virtual void  Hits2Clusters(TFile *of, Int_t eventn);
   virtual void  Hits2ExactClustersSector(Int_t isec); // MI change calculate "exact" cluster position
-
-  virtual void  Hits2Digits();   //MI change
-  virtual void Hits2DigitsSector(Int_t isec);  //MI change
+  virtual void  SDigits2Digits(Int_t eventnumber=0);
+  virtual void  Hits2SDigits(Int_t eventnumber=0);
+  virtual void  Digits2Reco(Int_t eventnumber=0);
+  virtual void  Hits2Digits(Int_t eventnumber=0);   //MI change
+  virtual void  Hits2DigitsSector(Int_t isec);  //MI change
   virtual void  Init();
   virtual Int_t IsVersion() const =0;
-  virtual void  Digits2Clusters(TFile *of);
+  virtual void  Digits2Clusters(TFile *of, Int_t eventnumber=0);
   virtual void  Clusters2Tracks(TFile *of);
 
   Int_t         GetNsectors()       {return fNsectors;}
-  virtual void  MakeBranch(Option_t *opt=" ");
+  virtual void  MakeBranch(Option_t *opt=" ", const char *file=0 );
   virtual void  ResetDigits();
   virtual void  SetSecAL(Int_t sec);
   virtual void  SetSecAU(Int_t sec);
@@ -71,9 +78,6 @@ public:
                           Int_t s7,Int_t s8,Int_t s9,Int_t s10, Int_t s11, Int_t s12);
   virtual void  SetSens(Int_t sens);
 
-  //MK changes
-
-  //MK changes
 
   virtual void  SetSide(Float_t side);
   virtual void  SetGasMixt(Int_t nc,Int_t c1,Int_t c2,Int_t c3,Float_t p1,
@@ -87,8 +91,35 @@ public:
   void SetParam(AliTPCParam *param){fTPCParam=param;} // M.K, M.I changes
   void SetDigitsArray(AliTPCDigitsArray* param) {fDigitsArray=param;}  //MI change
   void SetClustersArray(AliTPCClustersArray *clusters) {fClustersArray = clusters;} //MI change
+
+// additional function neccesary for the new hits 
+   virtual void MakeBranch2(Option_t *opt=" ", const char *file=0);  //
+   virtual void SetTreeAddress();
+   virtual void SetTreeAddress2();
+   virtual void AddHit2(Int_t a1,  Int_t *a2, Float_t *a3);  //
+   virtual void ResetHits();
+   virtual void ResetHits2();     
+   virtual AliHit* FirstHit(Int_t track);
+   virtual AliHit* NextHit();
+   virtual AliHit* FirstHit2(Int_t track);
+   virtual AliHit* NextHit2();
+   
+   virtual void LoadPoints(Int_t dummy);
+   virtual void LoadPoints2(Int_t dummy);
+   virtual void LoadPoints3(Int_t dumy);
+   virtual void FinishPrimary();
+   virtual void RemapTrackHitIDs(Int_t *map);
+   virtual void FindTrackHitsIntersection(TClonesArray * arr);
+   //fill clones array with intersection of current point with the
+   //middle of the row
+   void SetHitType(Int_t type){fHitType =type;} //set type of hit container
+   void SetDigitsSwitch(Int_t sw){fDigitsSwitch = sw;}
+   void SetDefSwitch(Int_t def){fDefaults = def;}
+
+
 private:
   //
+  void SetDefaults();
   void DigitizeRow(Int_t irow,Int_t isec,TObjArray **rowTriplet);
   Float_t GetSignal(TObjArray *p1, Int_t ntr, TMatrix *m1, TMatrix *m2,
                     Int_t *IndexRange);
@@ -101,7 +132,7 @@ private:
                          // index[2] pad row number  
                          // index[3] pad row number for which signal is calculated
   
-  ClassDef(AliTPC,2)  // Time Projection Chamber class
+  ClassDef(AliTPC,4)  // Time Projection Chamber class
 };
 
 
@@ -136,6 +167,9 @@ public:
    AliTPChit() {}
    AliTPChit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits);
    virtual ~AliTPChit() {}
+   void SetX(Float_t x){fX = x;}
+   void SetY(Float_t y){fY = y;}
+   void SetZ(Float_t z){fZ = z;}
  
    ClassDef(AliTPChit,1)  // Time Projection Chamber hits
 };