#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
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
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);
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,
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);
// 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
};
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
};