18 namespace AliHelperPIDNameSpace {
24 kNSigmaTPCTOF, // squared sum
28 const Int_t kNSigmaPIDType=kNSigmaTPCTOF;//number of Nsigma PID types
30 enum AliHelperDetectorType_t
39 enum AliHelperParticleSpecies_t
46 }; // Particle species used in plotting
49 enum AliHelperCharge_t
57 using namespace AliHelperPIDNameSpace;
59 class AliHelperPID : public TNamed
64 virtual ~AliHelperPID() {}
67 Bool_t GetisMC(){return fisMC;}
68 void SetisMC(Bool_t mc){fisMC=mc;}
70 void SetPIDType(PIDType_t PIDType) { fPIDType = PIDType; }
71 PIDType_t GetPIDType() {return fPIDType; }
73 void SetNSigmaCut(Double_t nsigma) { fNSigmaPID = nsigma; }
74 Double_t GetNSigmaCut() {return fNSigmaPID; }
76 void SetfRequestTOFPID(Bool_t tof){fRequestTOFPID=tof;}//fRequestTOFPID
77 Bool_t GetfRequestTOFPID(){return fRequestTOFPID;}//fRequestTOFPID
78 void SetfRemoveTracksT0Fill(Bool_t tof){fRemoveTracksT0Fill=tof;}//fRemoveTracksT0Fill
79 Bool_t GetfRemoveTracksT0Fill(){return fRemoveTracksT0Fill;}//fRemoveTracksT0Fill
81 void SetfUseExclusiveNSigma(Bool_t nsigEx){fUseExclusiveNSigma=nsigEx;}//fUseExclusiveNSigma
82 Bool_t GetfUseExclusiveNSigma(){return fUseExclusiveNSigma;}//fUseExclusiveNSigma
83 //lower pt fot TOF PID
84 Double_t GetPtTOFPID(){return fPtTOFPID;}
85 void SetfPtTOFPID(Double_t pttof){fPtTOFPID=pttof;}
87 void SetPIDCombined(AliPIDCombined *obj){fPIDCombined=obj;}
88 //void SetPIDCombined(AliPIDCombined *obj){Printf("void AliHelperPID::SetPIDCombined(AliPIDCombined *obj) not implemented");} //FIXME Left for backward compatibility, not the PIDCombined onject is created in the constructor as done in /ANALYSIS/AliAnalysisTaskPIDCombined.cxx (Jul 15th 2014)
89 AliPIDCombined *GetPIDCombined(){return fPIDCombined;}
90 //set cut on beyesian probability
91 void SetBayesCut(Double_t cut){fBayesCut=cut;}
92 Double_t GetBayesCut(){return fBayesCut;}
94 //getters of the other data members
95 TList * GetOutputList() {return fOutputList;}//get the TList with histos
96 Double_t* GetNSigmas(AliHelperParticleSpecies_t species) {return fnsigmas[species];}//get nsigma[ipart][idet], calculated in CalculateNSigmas(trk)
97 Bool_t* GetfHasDoubleCounting() {return fHasDoubleCounting;}//get fHasDoubleCounting[ipart], calculated in GetDoubleCounting(trk)
98 //getter of histo "name" from fOutput
99 TH2F* GetHistogram2D(const char * name);//return histogram "name" from fOutputList
102 // User should call ONLY the function GetParticleSpecies and set the PID strategy in the steering macro!
103 Int_t GetParticleSpecies(AliVTrack * trk, Bool_t FIllQAHistos);//calculate the PID according to the slected method.
104 Int_t GetParticleSpecies(AliVParticle * part);
106 Int_t GetIDBayes(AliVTrack * trk, Bool_t FIllQAHistos);//calculate the PID according to bayesian PID
107 UInt_t CalcPIDCombined(const AliVTrack *track,const AliPIDResponse *PIDResponse, Int_t detMask, Double_t* prob) const;
108 void CalculateNSigmas(AliVTrack * trk, Bool_t FIllQAHistos);//Calcuate nsigma[ipart][idet], fill NSigma histos
109 Int_t FindMinNSigma(AliVTrack * trk, Bool_t FIllQAHistos);//retun the minimum Nsigma
110 Bool_t* GetDoubleCounting(AliVTrack * trk, Bool_t FIllQAHistos);//if a particle has double counting set fHasDoubleCounting[ipart]=kTRUE (only for the second or third identity)
111 Bool_t* GetAllCompatibleIdentitiesNSigma(AliVTrack * trk, Bool_t FIllQAHistos);//All the identities are true
112 Int_t GetMCParticleSpecie(AliVEvent* event, AliVTrack * trk, Bool_t FIllQAHistos);//calculate the PID according to MC truth
113 void CheckTOF(AliVTrack * trk);//check the TOF matching and set fHasTOFPID
114 Double_t TOFBetaCalc(AliVTrack *track) const;
115 Double_t GetMass(AliHelperParticleSpecies_t id) const;
116 Long64_t Merge(TCollection* list);
121 PIDType_t fPIDType; // PID type
122 Double_t fNSigmaPID; // number of sigma for PID cut
123 Double_t fBayesCut; // Cut on Bayesian probability
124 AliPIDResponse *fPIDResponse; //! PID response object
125 AliPIDCombined *fPIDCombined; // PIDCombined
126 TList *fOutputList; // List Histo's
127 Double_t fnsigmas[kNSpecies][kNSigmaPIDType+1]; //nsigma values
128 Bool_t fHasDoubleCounting[kNSpecies];//array with compatible identities
129 Bool_t fRequestTOFPID;//if true returns kSpUndefined if the TOF signal is missing
130 Bool_t fRemoveTracksT0Fill;//if true remove tracks for which only StartTime from To-Fill is available (worst resolution)
131 Bool_t fUseExclusiveNSigma;//if true returns the identity only if no double counting
132 Double_t fPtTOFPID; //lower pt bound for the TOF pid
135 AliHelperPID(const AliHelperPID&);
136 AliHelperPID& operator=(const AliHelperPID&);
138 ClassDef(AliHelperPID, 8);