X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=HLT%2Fsrc%2FAliL3Evaluate.h;h=d890bd5f30b8faaac925cf31d0ee75f5feff6f79;hb=70d2c4a20ce8f12da07e35caade0b60297ae1c47;hp=5266292e0b2899f4d3615824221d8264ddba3613;hpb=e170e0f9f57932317d0ec18585f62d6feac3f7de;p=u%2Fmrichter%2FAliRoot.git diff --git a/HLT/src/AliL3Evaluate.h b/HLT/src/AliL3Evaluate.h index 5266292e0b2..d890bd5f30b 100644 --- a/HLT/src/AliL3Evaluate.h +++ b/HLT/src/AliL3Evaluate.h @@ -1,23 +1,8 @@ +// @(#) $Id$ + #ifndef ALIL3_Evaluate #define ALIL3_Evaluate -#include -#include -#include -#include -#include "AliSimDigits.h" - - -struct GoodTrack -{ - - Int_t label; - Int_t code; - Double_t px,py,pz; - Double_t pt; -}; -typedef struct GoodTrack GoodTrack; - class AliL3Track; class TClonesArray; @@ -25,97 +10,116 @@ class TFile; class AliL3TrackArray; class AliL3SpacePointData; class TH1F; -class AliL3Transform; class AliTPCParam; class TTree; class AliSimDigits; class TObjArray; class TParticle; +class AliL3FileHandler; +class TClonesArray; +class TNtuple; +class TH1F; +//#include +//#include -class AliL3Evaluate : public TObject { +class AliL3Evaluate { + +struct AliGoodTrack +{ + Int_t flabel; //label + Double_t feta; //eta + Int_t fcode; //pcode + Double_t fpx,fpy,fpz; //momentum + Double_t fx,fy,fz; //pos at entrance + Int_t fnhits; //nhits + Int_t fsector; //sector number +}; +typedef struct AliGoodTrack AliGoodTrack; + +struct AliS +{ + Int_t flab; //lab + Int_t fmax; //max +}; +typedef struct AliS AliS; private: - TFile *fDigitsFile; - TFile *fMCclusterfile; //If you run the fast simulator. - TFile *fEventFile; - GoodTrack fGoodTracks[15000]; //! - TObjArray *fParticles; AliL3TrackArray *fTracks; //! - AliTPCParam *fParam; - AliL3SpacePointData *fClusters[36][5]; //! - AliL3Transform *fTransform; //! - AliSimDigits *fDigits; - TTree *fDigitsTree; - Int_t fMinSlice; - Int_t fMaxSlice; - UInt_t fNcl[36][5]; - Int_t fRowid[36][176]; - Int_t fMinPointsOnTrack; //Minimum points on track to be considered. - Bool_t fIsSlow; - Bool_t fNoOverlap; - Int_t fNFastPoints; + AliL3SpacePointData *fClusters[36][6]; //! + AliL3FileHandler *fClustersFile[36][6]; //! + Char_t fPath[1024]; //path + Int_t fMinSlice; //min slice + Int_t fMaxSlice; //max slice + UInt_t fNcl[36][6]; //cluster numbers + Int_t fRowid[36][176]; //row ids + Int_t fMinPointsOnTrack; //minimum points on track to be considered. + Int_t fMinHitsFromParticle; //minimums hits a particle has to create + AliGoodTrack *fGoodTracks; //! + Float_t fMaxFalseClusters; //maximum number of false assigned clusters + + Int_t fNFastPoints; //fast access to points UInt_t *fMcIndex;//! Int_t *fMcId;//! - Int_t fGoodFound; - Int_t fGoodGen; - Double_t fMinGoodPt; - - //Histograms - TNtuple *fNtuppel; - TH1F *fPtRes; - TH1F *fNGoodTracksPt; - TH1F *fNFoundTracksPt; - TH1F *fNFakeTracksPt; - TH1F *fTrackEffPt; - TH1F *fFakeTrackEffPt; - TH1F *fNGoodTracksEta; - TH1F *fNFoundTracksEta; - TH1F *fNFakeTracksEta; - TH1F *fTrackEffEta; - TH1F *fFakeTrackEffEta; + Int_t fGoodFound; //good found + Int_t fGoodGen; //good generated found + Double_t fMinGoodPt; //min pt + Double_t fMaxGoodPt; //max pt - void FillEffHistos(); - void CalcEffHistos(); - void AssignIDs(); - Bool_t InitMC(); - void DefineGoodTracks(Int_t *slice,Int_t *padrow,Int_t good_number); - Int_t GetMCTrackLabel(AliL3Track *track); - Int_t **GetClusterIDs(AliL3Track *track); - void GetFastClusterIDs(Char_t *path); + //Histograms + TNtuple *fNtuppel;//! + TH1F *fPtRes;//! + TH1F *fNGoodTracksPt;//! + TH1F *fNFoundTracksPt;//! + TH1F *fNFakeTracksPt;//! + TH1F *fTrackEffPt;//! + TH1F *fFakeTrackEffPt;//! + TH1F *fNGoodTracksEta;//! + TH1F *fNFoundTracksEta;//! + TH1F *fNFakeTracksEta;//! + TH1F *fTrackEffEta;//! + TH1F *fFakeTrackEffEta;//! + TNtuple *fNtupleRes;//! + Bool_t fStandardComparison; // take standard macro + void Clear(); public: AliL3Evaluate(); - AliL3Evaluate(Char_t *mcfile,Char_t *digitsfile,Int_t *slice); - AliL3Evaluate(Int_t *slice); - + AliL3Evaluate(Char_t *path,Int_t min_clusters,Int_t minhits,Double_t minpt=0.1,Double_t maxpt=4.,Int_t *slice=0); virtual ~AliL3Evaluate(); - - void SetupFast(Char_t *trackfile,Char_t *mcClusterfile,Char_t *path="."); - void SetupSlow(Char_t *trackfile,Char_t *path="."); - void Setup(Char_t *trackfile,Char_t *path); - void CreateHistos(Int_t nbin=20,Int_t xlow=0,Int_t xup=4); - void EvaluatePatch(Int_t slice,Int_t patch,Int_t min_points,Int_t good_number); - void EvaluateSlice(Int_t slice,Int_t min_points,Int_t good_number); - void EvaluateGlobal(Int_t min_points,Int_t good_number); + + void LoadData(Int_t event=-1,Bool_t sp=kFALSE); + void CreateHistos(Int_t nbin=20,Float_t xlow=0,Float_t xup=4); void Write2File(Char_t *outputfile); - + void FillEffHistos(); + void FillEffHistosNAIVE(); + void CalcEffHistos(); + void AssignPIDs(); + void AssignIDs(); + void GetGoodParticles(Char_t *particlefile,Int_t event=-1,Int_t *padrowrange=0); + void GetFastClusterIDs(Char_t *path); + void GetCFeff(Char_t *path,Char_t *outfile,Int_t nevent=0,Bool_t sp=kFALSE); + Int_t GetMCTrackLabel(AliL3Track *track); + Float_t GetTrackPID(AliL3Track *track); + void CalculateResiduals(); + void EvaluatePoints(Char_t *rootfile,Char_t *exactfile,Char_t *tofile,Int_t nevent=1,Bool_t offline=kFALSE,Bool_t sp=kFALSE); + Float_t GetCrossingAngle(TParticle *part,Int_t slice,Int_t padrow,Float_t *xyz); + Int_t FindPrimaries(Int_t nparticles); + void SetMinPoints(Int_t f) {fMinPointsOnTrack = f;} + void SetMinGoodPt(Double_t f) {fMinGoodPt = f;} + void SetMaxFalseClusters(Float_t f) {fMaxFalseClusters = f;} + void SetStandardComparison(Bool_t b) {fStandardComparison = b;} + TNtuple *GetNtuple(); + Int_t GetNGoodTracks() const {return fGoodGen;} + Int_t GetNFoundTracks() const {return fGoodFound;} TH1F *GetTrackEffPt() {return fTrackEffPt;} TH1F *GetTrackEffEta() {return fTrackEffEta;} + TH1F *GetFakeEffEta() {return fFakeTrackEffEta;} + TH1F *GetFakeEffPt() {return fFakeTrackEffPt;} TH1F *GetPtRes() {return fPtRes;} - - void SetMinPoints(Int_t f) {fMinPointsOnTrack = f;} - void SetMinGoodPt(Double_t f) {fMinGoodPt = f;} - void DoSingleTracks() {fNoOverlap = kTRUE;} - Int_t GetNGoodTracks() {return fGoodGen;} - Int_t GetNFoundTracks() {return fGoodFound;} + AliL3TrackArray *GetTracks() {return fTracks;} - TNtuple *CalculateResiduals(); - TNtuple *EvaluatePoints(Char_t *rootfile); - Bool_t GetParticleCrossingPoint(TParticle *part,Int_t slice,Int_t padrow,Float_t *xyz); - //TNtuple *EvaluateGEANT(); - - ClassDef(AliL3Evaluate,1) + ClassDef(AliL3Evaluate,1) //Tracking evaluation class }; #endif