"require ITS Pid",
"n crossed rows TPC",
"n crossed rows / n findable clusters",
+ "missing ITS points"
};
//____________________________________________________________________
fCutMinRatioCrossedRowsOverFindableClustersTPC(0),
fCutMaxChi2PerClusterTPC(0),
fCutMaxChi2PerClusterITS(0),
+ fCutMaxMissingITSPoints(0),
fCutMaxC11(0),
fCutMaxC22(0),
fCutMaxC33(0),
SetMinRatioCrossedRowsOverFindableClustersTPC();
SetMaxChi2PerClusterTPC();
SetMaxChi2PerClusterITS();
+ SetMaxNOfMissingITSPoints();
SetMaxCovDiagonalElements();
SetMaxRel1PtUncertainty();
SetRequireTPCRefit();
fCutMinRatioCrossedRowsOverFindableClustersTPC(0),
fCutMaxChi2PerClusterTPC(0),
fCutMaxChi2PerClusterITS(0),
+ fCutMaxMissingITSPoints(0),
fCutMaxC11(0),
fCutMaxC22(0),
fCutMaxC33(0),
delete fhNClustersITS[i];
if (fhNClustersTPC[i])
delete fhNClustersTPC[i];
+ if (fhNSharedClustersTPC[i])
+ delete fhNSharedClustersTPC[i];
if (fhNCrossedRowsTPC[i])
delete fhNCrossedRowsTPC[i];
if (fhRatioCrossedRowsOverFindableClustersTPC[i])
fCutMaxChi2PerClusterTPC = 0;
fCutMaxChi2PerClusterITS = 0;
+ fCutMaxMissingITSPoints = 0;
for (Int_t i = 0; i < 3; i++)
fCutClusterRequirementITS[i] = kOff;
{
fhNClustersITS[i] = 0;
fhNClustersTPC[i] = 0;
+ fhNSharedClustersTPC[i] = 0;
fhNCrossedRowsTPC[i] = 0;
fhRatioCrossedRowsOverFindableClustersTPC[i] = 0;
target.fCutMaxChi2PerClusterTPC = fCutMaxChi2PerClusterTPC;
target.fCutMaxChi2PerClusterITS = fCutMaxChi2PerClusterITS;
+ target.fCutMaxMissingITSPoints = fCutMaxMissingITSPoints;
for (Int_t i = 0; i < 3; i++)
target.fCutClusterRequirementITS[i] = fCutClusterRequirementITS[i];
{
if (fhNClustersITS[i]) target.fhNClustersITS[i] = (TH1F*) fhNClustersITS[i]->Clone();
if (fhNClustersTPC[i]) target.fhNClustersTPC[i] = (TH1F*) fhNClustersTPC[i]->Clone();
+ if (fhNSharedClustersTPC[i]) target.fhNSharedClustersTPC[i] = (TH1F*) fhNSharedClustersTPC[i]->Clone();
if (fhNCrossedRowsTPC[i]) target.fhNCrossedRowsTPC[i] = (TH1F*) fhNCrossedRowsTPC[i]->Clone();
if (fhRatioCrossedRowsOverFindableClustersTPC[i]) target.fhRatioCrossedRowsOverFindableClustersTPC[i] = (TH1F*) fhRatioCrossedRowsOverFindableClustersTPC[i]->Clone();
fhNClustersITS[i] ->Add(entry->fhNClustersITS[i] );
fhNClustersTPC[i] ->Add(entry->fhNClustersTPC[i] );
- fhNCrossedRowsTPC[i] ->Add(entry->fhNCrossedRowsTPC[i] );
- fhRatioCrossedRowsOverFindableClustersTPC[i] ->Add(entry->fhRatioCrossedRowsOverFindableClustersTPC[i] );
+ if (fhNSharedClustersTPC[i])
+ fhNSharedClustersTPC[i] ->Add(entry->fhNSharedClustersTPC[i] );
+ if (fhNCrossedRowsTPC[i])
+ fhNCrossedRowsTPC[i] ->Add(entry->fhNCrossedRowsTPC[i] );
+ if (fhRatioCrossedRowsOverFindableClustersTPC[i])
+ fhRatioCrossedRowsOverFindableClustersTPC[i] ->Add(entry->fhRatioCrossedRowsOverFindableClustersTPC[i] );
fhChi2PerClusterITS[i] ->Add(entry->fhChi2PerClusterITS[i]);
fhChi2PerClusterTPC[i] ->Add(entry->fhChi2PerClusterTPC[i]);
return esdTrackCuts;
}
+//____________________________________________________________________
+AliESDtrackCuts* AliESDtrackCuts::GetStandardITSSATrackCutsPbPb2010(Bool_t selPrimaries, Bool_t useForPid)
+{
+ // creates an AliESDtrackCuts object and fills it with standard values for ITS pure SA tracks -- PbPb 2010
+
+ AliESDtrackCuts* esdTrackCuts = GetStandardITSSATrackCuts2010(selPrimaries, useForPid);
+ esdTrackCuts->SetMaxNOfMissingITSPoints(1);
+
+ return esdTrackCuts;
+}
+
//____________________________________________________________________
Int_t AliESDtrackCuts::GetReferenceMultiplicity(AliESDEvent* esd, Bool_t tpcOnly)
{
if (ratioCrossedRowsOverFindableClustersTPC<fCutMinRatioCrossedRowsOverFindableClustersTPC)
cuts[37]=kTRUE;
+ Int_t nMissITSpts=0;
+ Int_t idet,statusLay;
+ Float_t xloc,zloc;
+ for(Int_t iLay=0; iLay<6; iLay++){
+ Bool_t retc=esdTrack->GetITSModuleIndexInfo(iLay,idet,statusLay,xloc,zloc);
+ if(retc && statusLay==5) ++nMissITSpts;
+ }
+ if(nMissITSpts>fCutMaxMissingITSPoints) cuts[38] = kTRUE;
+
Bool_t cut=kFALSE;
for (Int_t i=0; i<kNCuts; i++)
if (cuts[i]) {cut = kTRUE;}
{
fhNClustersITS[id]->Fill(nClustersITS);
fhNClustersTPC[id]->Fill(nClustersTPC);
+ fhNSharedClustersTPC[id]->Fill(nClustersTPCShared);
fhNCrossedRowsTPC[id]->Fill(nCrossedRowsTPC);
fhRatioCrossedRowsOverFindableClustersTPC[id]->Fill(ratioCrossedRowsOverFindableClustersTPC);
fhChi2PerClusterITS[id]->Fill(chi2PerClusterITS);
for (Int_t i=0; i<2; i++) {
fhNClustersITS[i] = new TH1F("nClustersITS" ,"",8,-0.5,7.5);
fhNClustersTPC[i] = new TH1F("nClustersTPC" ,"",165,-0.5,164.5);
+ fhNSharedClustersTPC[i] = new TH1F("nSharedClustersTPC" ,"",165,-0.5,164.5);
fhNCrossedRowsTPC[i] = new TH1F("nCrossedRowsTPC" ,"",165,-0.5,164.5);
fhRatioCrossedRowsOverFindableClustersTPC[i] = new TH1F("ratioCrossedRowsOverFindableClustersTPC" ,"",60,0,1.5);
fhChi2PerClusterITS[i] = new TH1F("chi2PerClusterITS","",500,0,10);
fhNClustersITS[i]->SetTitle("n ITS clusters");
fhNClustersTPC[i]->SetTitle("n TPC clusters");
+ fhNSharedClustersTPC[i]->SetTitle("n TPC shared clusters");
fhChi2PerClusterITS[i]->SetTitle("#Chi^{2} per ITS cluster");
fhChi2PerClusterTPC[i]->SetTitle("#Chi^{2} per TPC cluster");
fhNClustersITS[i]->SetLineColor(color); fhNClustersITS[i]->SetLineWidth(2);
fhNClustersTPC[i]->SetLineColor(color); fhNClustersTPC[i]->SetLineWidth(2);
+ fhNSharedClustersTPC[i]->SetLineColor(color); fhNSharedClustersTPC[i]->SetLineWidth(2);
fhChi2PerClusterITS[i]->SetLineColor(color); fhChi2PerClusterITS[i]->SetLineWidth(2);
fhChi2PerClusterTPC[i]->SetLineColor(color); fhChi2PerClusterTPC[i]->SetLineWidth(2);
fhNClustersITS[i] = dynamic_cast<TH1F*> (gDirectory->Get("nClustersITS" ));
fhNClustersTPC[i] = dynamic_cast<TH1F*> (gDirectory->Get("nClustersTPC" ));
+ fhNSharedClustersTPC[i] = dynamic_cast<TH1F*> (gDirectory->Get("nSharedClustersTPC" ));
fhNCrossedRowsTPC[i] = dynamic_cast<TH1F*> (gDirectory->Get("nCrossedRowsTPC" ));
fhRatioCrossedRowsOverFindableClustersTPC[i] = dynamic_cast<TH1F*> (gDirectory->Get("ratioCrossedRowsOverFindableClustersTPC" ));
fhChi2PerClusterITS[i] = dynamic_cast<TH1F*> (gDirectory->Get("chi2PerClusterITS"));
fhNClustersITS[i] ->Write();
fhNClustersTPC[i] ->Write();
+ fhNSharedClustersTPC[i] ->Write();
fhNCrossedRowsTPC[i] ->Write();
fhRatioCrossedRowsOverFindableClustersTPC[i] ->Write();
fhChi2PerClusterITS[i] ->Write();
static AliESDtrackCuts* GetStandardITSTPCTrackCuts2010(Bool_t selPrimaries=kTRUE, Int_t clusterCut=0);
static AliESDtrackCuts* GetStandardITSSATrackCuts2009(Bool_t selPrimaries=kTRUE, Bool_t useForPid=kTRUE);
static AliESDtrackCuts* GetStandardITSSATrackCuts2010(Bool_t selPrimaries=kTRUE, Bool_t useForPid=kTRUE);
+ static AliESDtrackCuts* GetStandardITSSATrackCutsPbPb2010(Bool_t selPrimaries=kTRUE, Bool_t useForPid=kTRUE);
static AliESDtrackCuts* GetStandardITSPureSATrackCuts2009(Bool_t selPrimaries=kTRUE, Bool_t useForPid=kTRUE);
static AliESDtrackCuts* GetStandardITSPureSATrackCuts2010(Bool_t selPrimaries=kTRUE, Bool_t useForPid=kTRUE);
void SetClusterRequirementITS(Detector det, ITSClusterRequirement req = kOff) { fCutClusterRequirementITS[det] = req; }
void SetMaxChi2PerClusterTPC(Float_t max=1e10) {fCutMaxChi2PerClusterTPC=max;}
void SetMaxChi2PerClusterITS(Float_t max=1e10) {fCutMaxChi2PerClusterITS=max;}
+ void SetMaxNOfMissingITSPoints(Int_t max=6) {fCutMaxMissingITSPoints=max;}
void SetRequireTPCRefit(Bool_t b=kFALSE) {fCutRequireTPCRefit=b;}
void SetRequireTPCStandAlone(Bool_t b=kFALSE) {fCutRequireTPCStandAlone=b;}
void SetRequireITSRefit(Bool_t b=kFALSE) {fCutRequireITSRefit=b;}
ITSClusterRequirement GetClusterRequirementITS(Detector det) const { return fCutClusterRequirementITS[det]; }
Float_t GetMaxChi2PerClusterTPC() const { return fCutMaxChi2PerClusterTPC;}
Float_t GetMaxChi2PerClusterITS() const { return fCutMaxChi2PerClusterITS;}
+ Int_t GetMaxNOfMissingITSPoints() const { return fCutMaxMissingITSPoints;}
Bool_t GetRequireTPCRefit() const { return fCutRequireTPCRefit;}
Bool_t GetRequireTPCStandAlone() const { return fCutRequireTPCStandAlone;}
Bool_t GetRequireITSRefit() const { return fCutRequireITSRefit;}
// void SaveQualityCuts(Char_t* file)
// void LoadQualityCuts(Char_t* file)
- TH1F* GetDZNormalized(Int_t i) const { return fhDZNormalized[i]; }
+ TH1F* GetDZNormalized(Int_t i) const { return fhDZNormalized[i]; }
+ TH1F* GetNClustersTPC(Int_t i) const { return fhNClustersTPC[i]; }
+ TH1F* GetPtHist(Int_t i) const { return fhPt[i]; }
protected:
void Init(); // sets everything to 0
Bool_t CheckPtDepDCA(TString dist,Bool_t print=kFALSE) const;
void SetPtDepDCACuts(Double_t pt);
- enum { kNCuts = 38 };
+ enum { kNCuts = 39 };
//######################################################
// esd track quality cuts
Float_t fCutMaxChi2PerClusterTPC; // max tpc fit chi2 per tpc cluster
Float_t fCutMaxChi2PerClusterITS; // max its fit chi2 per its cluster
+ Int_t fCutMaxMissingITSPoints; // max n. of missing ITS points
Float_t fCutMaxC11; // max cov. matrix diag. elements (res. y^2)
Float_t fCutMaxC22; // max cov. matrix diag. elements (res. z^2)
TH1F* fhNClustersITS[2]; //->
TH1F* fhNClustersTPC[2]; //->
+ TH1F* fhNSharedClustersTPC[2]; //->
TH1F* fhNCrossedRowsTPC[2]; //->
TH1F* fhRatioCrossedRowsOverFindableClustersTPC[2]; // ->
TH1F* fhCutStatistics; //-> statistics of what cuts the tracks did not survive
TH2F* fhCutCorrelation; //-> 2d statistics plot
- ClassDef(AliESDtrackCuts, 13)
+ ClassDef(AliESDtrackCuts, 14)
};