6 #include <TClonesArray.h>
11 #include "AliESDtrack.h"
13 #include "AliTLorentzVector.h"
27 fSelectionModeAny(kFALSE),
30 fEmcalTrackSelection(0),
36 fClassName =
"AliVTrack";
37 fMassHypothesis = 0.139;
45 fSelectionModeAny(kFALSE),
47 fTrackCutsPeriod(period),
48 fEmcalTrackSelection(0),
77 AliInfo(
"Using custom track cuts");
81 AliInfo(Form(
"Objects are of type %s: AOD track selection will be done.",
fLoadedClass->GetName()));
85 AliInfo(Form(
"Objects are of type %s: ESD track selection will be done.",
fLoadedClass->GetName()));
89 AliWarning(Form(
"Objects are of type %s: no track filtering will be done!!",
fLoadedClass->GetName()));
109 AliInfo(Form(
"Using track cuts %d (no data period was provided!)",
fTrackFilterType));
113 AliInfo(Form(
"Objects are of type %s: AOD track selection will be done.",
fLoadedClass->GetName()));
117 AliInfo(Form(
"Objects are of type %s: ESD track selection will be done.",
fLoadedClass->GetName()));
121 AliWarning(Form(
"Objects are of type %s: no track filtering will be done!!",
fLoadedClass->GetName()));
135 TIter nextBitmap(trackBitmaps);
138 while ((bits = static_cast<TBits*>(nextBitmap()))) {
145 if (bits->FirstSetBit() == 0) {
148 else if (bits->FirstSetBit() == 1) {
149 if ((vTrack->GetStatus()&AliVTrack::kITSrefit) != 0) {
186 AliDebug(2,
"Track not accepted.");
227 if (mass < 0) mass = part->M();
228 mom.SetPtEtaPhiM(part->Pt(), part->Eta(), part->Phi(),
mass);
232 mom.SetPtEtaPhiM(0, 0, 0, 0);
253 if (mass < 0) mass = vp->M();
257 AliESDtrack *track =
static_cast<AliESDtrack*
>(vp);
258 mom.SetPtEtaPhiM(track->GetConstrainedParam()->Pt(), track->GetConstrainedParam()->Eta(), track->GetConstrainedParam()->Phi(),
mass);
261 mom.SetPtEtaPhiM(vp->Pt(), vp->Eta(), vp->Phi(),
mass);
266 mom.SetPtEtaPhiM(0, 0, 0, 0);
280 if (mass < 0) mass = vp->M();
284 AliESDtrack *track =
static_cast<AliESDtrack*
>(vp);
285 mom.SetPtEtaPhiM(track->GetConstrainedParam()->Pt(), track->GetConstrainedParam()->Eta(), track->GetConstrainedParam()->Phi(),
mass);
288 mom.SetPtEtaPhiM(vp->Pt(), vp->Eta(), vp->Phi(),
mass);
293 mom.SetPtEtaPhiM(0, 0, 0, 0);
308 if (mass < 0) mass = vp->M();
312 AliESDtrack *track =
static_cast<AliESDtrack*
>(vp);
313 mom.SetPtEtaPhiM(track->GetConstrainedParam()->Pt(), track->GetConstrainedParam()->Eta(), track->GetConstrainedParam()->Phi(),
mass);
316 mom.SetPtEtaPhiM(vp->Pt(), vp->Eta(), vp->Phi(),
mass);
322 mom.SetPtEtaPhiM(0, 0, 0, 0);
336 if (mass < 0) mass = vp->M();
340 AliESDtrack *track =
static_cast<AliESDtrack*
>(vp);
341 mom.SetPtEtaPhiM(track->GetConstrainedParam()->Pt(), track->GetConstrainedParam()->Eta(), track->GetConstrainedParam()->Phi(),
mass);
344 mom.SetPtEtaPhiM(vp->Pt(), vp->Eta(), vp->Phi(),
mass);
350 mom.SetPtEtaPhiM(0, 0, 0, 0);
360 if (!r)
return kFALSE;
362 AliTLorentzVector mom;
380 if (!r)
return kFALSE;
382 AliTLorentzVector mom;
402 if (cls.InheritsFrom(
"AliVTrack"))
fClassName = clname;
403 else AliError(Form(
"Unable to set class name %s for a AliTrackContainer, it must inherits from AliVTrack!",clname));
427 if (icut < fListOfCuts->GetEntries()) {
428 return static_cast<AliVCuts *
>(
fListOfCuts->At(icut));
436 static TString trackString;
448 return trackString.Data();
Interface for virtual track selection.
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
TObjArray * fFilteredTracks
track selection object
void SetClassName(const char *clname)
virtual Bool_t ApplyTrackCuts(const AliVTrack *vp)
static TString fgDefTrackCutsPeriod
virtual Bool_t AcceptTrack(const AliVTrack *vp)
TString fClassName
name of branch
virtual void SetArray(AliVEvent *event)
const TClonesArray * GetAcceptedTrackBitmaps() const
virtual Bool_t ApplyParticleCuts(const AliVParticle *vp)
void SetSelectionModeAny()
AliVCuts * GetTrackCuts(Int_t icut)
virtual Bool_t GetNextMomentum(TLorentzVector &mom)
AliEmcalTrackSelection * fEmcalTrackSelection
TClass * fLoadedClass
!Class of teh objects contained in the TClonesArray
ETrackFilterType_t fTrackFilterType
default period string used to generate track cuts
void SetArray(AliVEvent *event)
Container for particles within the EMCAL framework.
Double_t GetMinPt() const
Int_t GetNumberOfCutObjects() const
TArrayC fTrackTypes
tracks filtered using fEmcalTrackSelection
void AddTrackCuts(AliVCuts *cuts)
Implement virtual track selection for AOD analysis.
virtual AliVTrack * GetNextTrack()
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
const TString & GetArrayName() const
Double_t fMassHypothesis
maximum MC label
virtual AliVTrack * GetTrack(Int_t i=-1) const
TObjArray * GetAcceptedTracks(const TClonesArray *const tracks)
virtual AliVTrack * GetNextAcceptTrack()
virtual Bool_t GetMomentum(TLorentzVector &mom, const AliVTrack *part, Double_t mass)
virtual Bool_t GetAcceptMomentum(TLorentzVector &mom, Int_t i)
virtual Bool_t ApplyKinematicCuts(const AliTLorentzVector &mom)
void AddTrackCuts(AliVCuts *cuts)
virtual Bool_t GetNextAcceptMomentum(TLorentzVector &mom)
void SetSelectionModeAll()
const char * GetTitle() const
virtual AliVTrack * GetAcceptTrack(Int_t i=-1)
TClonesArray * fClArray
if < 0 it will use a PID mass when available
Int_t GetNEntries() const
Int_t fCurrentID
!current ID for automatic loops
Implementation of virtual track selection for ESDs.