"missing ITS points",
"#Chi^{2} TPC constrained vs. global",
"require TOF out",
- "TOF Distance cut"
+ "TOF Distance cut",
+ "min length in active volume TPC"
};
AliESDtrackCuts* AliESDtrackCuts::fgMultEstTrackCuts[AliESDtrackCuts::kNMultEstTrackCuts] = { 0, 0, 0, 0 };
fCutMinRatioCrossedRowsOverFindableClustersTPC(0),
f1CutMinNClustersTPCPtDep(0x0),
fCutMaxPtDepNClustersTPC(0),
+ fCutMinLengthActiveVolumeTPC(0),
fCutMaxChi2PerClusterTPC(0),
fCutMaxChi2PerClusterITS(0),
fCutMaxChi2TPCConstrainedVsGlobal(0),
fCutMinRatioCrossedRowsOverFindableClustersTPC(0),
f1CutMinNClustersTPCPtDep(0x0),
fCutMaxPtDepNClustersTPC(0),
+ fCutMinLengthActiveVolumeTPC(0),
fCutMaxChi2PerClusterTPC(0),
fCutMaxChi2PerClusterITS(0),
fCutMaxChi2TPCConstrainedVsGlobal(0),
target.f1CutMinNClustersTPCPtDep = (TFormula*) f1CutMinNClustersTPCPtDep->Clone("f1CutMinNClustersTPCPtDep");
}
target.fCutMaxPtDepNClustersTPC = fCutMaxPtDepNClustersTPC;
-
+ target.fCutMinLengthActiveVolumeTPC = fCutMinLengthActiveVolumeTPC;
+
target.fCutMaxChi2PerClusterTPC = fCutMaxChi2PerClusterTPC;
target.fCutMaxChi2PerClusterITS = fCutMaxChi2PerClusterITS;
target.fCutMaxChi2TPCConstrainedVsGlobal = fCutMaxChi2TPCConstrainedVsGlobal;
else {
nClustersTPC = esdTrack->GetTPCclusters(0);
}
-
+
//Pt dependent NClusters Cut
if(f1CutMinNClustersTPCPtDep) {
if(esdTrack->Pt()<fCutMaxPtDepNClustersTPC)
cut = kTRUE;
}
}
+
+ // max length in active volume
+ Float_t lengthInActiveZoneTPC = -1;
+ if (fCutMinLengthActiveVolumeTPC > 1.) { // do the calculation only if needed to save cpu-time
+ if (esdTrack->GetESDEvent()) {
+ lengthInActiveZoneTPC = esdTrack->GetLengthInActiveZone(1, 1.8, 220, esdTrack->GetESDEvent()->GetMagneticField());
+ //
+ if (lengthInActiveZoneTPC < fCutMinLengthActiveVolumeTPC ) {
+ cuts[42] = kTRUE;
+ cut = kTRUE;
+ }
+ }
+ }
+
+
}
//########################################################################
Int_t trackletsITSSA_complementary = 0; //number of SPD tracklets complementary to ITSSA tracks for a given event
const Int_t nESDTracks = esd->GetNumberOfTracks();
- Int_t highestID = 0;
// flags for secondary and rejected tracks
const Int_t kRejBit = BIT(15); // set this bit in global tracks if it is rejected by a cut
void SetMinNClustersITS(Int_t min=-1) {fCutMinNClusterITS=min;}
void SetMinNCrossedRowsTPC(Float_t min=-1) { fCutMinNCrossedRowsTPC=min;}
void SetMinRatioCrossedRowsOverFindableClustersTPC(Float_t min = -1) { fCutMinRatioCrossedRowsOverFindableClustersTPC=min;}
+ void SetMinLengthActiveVolumeTPC(Float_t min = 120.) {fCutMinLengthActiveVolumeTPC=min;}
void SetClusterRequirementITS(Detector det, ITSClusterRequirement req = kOff) { fCutClusterRequirementITS[det] = req; }
void SetClusterRequirementITS(ITSULayers det, ITSClusterRequirement req = kOff) { fCutClusterRequirementITS[det] = req; }
void SetMaxChi2PerClusterTPC(Float_t max=1e10) {fCutMaxChi2PerClusterTPC=max;}
void SetDCAToVertex2D(Bool_t b=kFALSE) {fCutDCAToVertex2D = b;}
- // getters
-
+ // getters
Int_t GetMinNClusterTPC() const { return fCutMinNClusterTPC;}
+ Float_t GetMinLengthActiveVolumeTPC() const { return fCutMinLengthActiveVolumeTPC;}
Int_t GetMinNClustersITS() const { return fCutMinNClusterITS;}
TFormula *GetMinNClustersTPCPtDep() const { return f1CutMinNClustersTPCPtDep;}
ITSClusterRequirement GetClusterRequirementITS(Detector det) const { return fCutClusterRequirementITS[det]; }
Bool_t CheckPtDepDCA(TString dist,Bool_t print=kFALSE) const;
void SetPtDepDCACuts(Double_t pt);
- enum { kNCuts = 42 };
+ enum { kNCuts = 43 };
//######################################################
// esd track quality cuts
Float_t fCutMinNCrossedRowsTPC; // min number of tpc crossed rows
Float_t fCutMinRatioCrossedRowsOverFindableClustersTPC; // min ratio crossed rows / findable clusters
TFormula *f1CutMinNClustersTPCPtDep; // pt dependent tpc clusters cut
- Float_t fCutMaxPtDepNClustersTPC; // maximum pt for pt dependend TPC cluster cut. For pt=>ptmax NClusterMin = f1CutMinNClustersTPCPtDep->Eval(fCutMaxPtDepNClustersTPC).
+ Float_t fCutMaxPtDepNClustersTPC; // maximum pt for pt dependend TPC cluster cut. For pt=>ptmax NClusterMin = f1CutMinNClustersTPCPtDep->Eval(fCutMaxPtDepNClustersTPC).
+ Float_t fCutMinLengthActiveVolumeTPC; // mininum length (in cm) over which the track is sampled in the active volume of the TPC (outside boundaries)
ITSClusterRequirement fCutClusterRequirementITS[3]; // detailed ITS cluster requirements for (SPD, SDD, SSD)