"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])
if (fhChi2PerClusterITS[i])
delete fhChi2PerClusterITS[i];
if (fhChi2PerClusterTPC[i])
- delete fhChi2PerClusterTPC[i];
+ delete fhChi2PerClusterTPC[i];
+ if(fhNClustersForITSPID[i])
+ delete fhNClustersForITSPID[i];
+ if(fhNMissingITSPoints[i])
+ delete fhNMissingITSPoints[i];
if (fhC11[i])
delete fhC11[i];
if (fhC22[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;
fhChi2PerClusterITS[i] = 0;
fhChi2PerClusterTPC[i] = 0;
+ fhNClustersForITSPID[i] = 0;
+ fhNMissingITSPoints[i] = 0;
fhC11[i] = 0;
fhC22[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();
if (fhChi2PerClusterITS[i]) target.fhChi2PerClusterITS[i] = (TH1F*) fhChi2PerClusterITS[i]->Clone();
if (fhChi2PerClusterTPC[i]) target.fhChi2PerClusterTPC[i] = (TH1F*) fhChi2PerClusterTPC[i]->Clone();
+ if (fhNClustersForITSPID[i]) target.fhNClustersForITSPID[i] = (TH1F*) fhNClustersForITSPID[i]->Clone();
+ if (fhNMissingITSPoints[i]) target.fhNMissingITSPoints[i] = (TH1F*) fhNMissingITSPoints[i]->Clone();
if (fhC11[i]) target.fhC11[i] = (TH1F*) fhC11[i]->Clone();
if (fhC22[i]) target.fhC22[i] = (TH1F*) fhC22[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]);
-
+ if (fhNClustersForITSPID[i])
+ fhNClustersForITSPID[i]->Add(entry->fhNClustersForITSPID[i]);
+ if (fhNMissingITSPoints[i])
+ fhNMissingITSPoints[i] ->Add(entry->fhNMissingITSPoints[i]);
+
fhC11[i] ->Add(entry->fhC11[i] );
fhC22[i] ->Add(entry->fhC22[i] );
fhC33[i] ->Add(entry->fhC33[i] );
}
//____________________________________________________________________
-Int_t AliESDtrackCuts::GetReferenceMultiplicity(AliESDEvent* esd, Bool_t tpcOnly)
+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(const AliESDEvent* esd, Bool_t tpcOnly)
{
// Gets reference multiplicity following the standard cuts and a defined fiducial volume
// tpcOnly = kTRUE -> consider TPC-only tracks
Float_t nCrossedRowsTPC = esdTrack->GetTPCClusterInfo(2,1);
Float_t ratioCrossedRowsOverFindableClustersTPC = 1.0;
if (esdTrack->GetTPCNclsF()>0) {
- ratioCrossedRowsOverFindableClustersTPC = esdTrack->GetTPCClusterInfo(2,1)/esdTrack->GetTPCNclsF();
+ ratioCrossedRowsOverFindableClustersTPC = nCrossedRowsTPC / esdTrack->GetTPCNclsF();
}
Int_t nClustersTPCShared = esdTrack->GetTPCnclsS();
if (fracClustersTPCShared > fCutMaxFractionSharedTPCClusters)
cuts[34] = kTRUE;
- if(fCutRequireITSPid){
- UChar_t clumap=esdTrack->GetITSClusterMap();
- Int_t nPointsForPid=0;
- for(Int_t i=2; i<6; i++){
- if(clumap&(1<<i)) ++nPointsForPid;
- }
- if(nPointsForPid<3) cuts[35] = kTRUE;
+ Int_t nITSPointsForPid=0;
+ UChar_t clumap=esdTrack->GetITSClusterMap();
+ for(Int_t i=2; i<6; i++){
+ if(clumap&(1<<i)) ++nITSPointsForPid;
}
+ if(fCutRequireITSPid && nITSPointsForPid<3) cuts[35] = kTRUE;
+
if (nCrossedRowsTPC<fCutMinNCrossedRowsTPC)
cuts[36]=kTRUE;
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);
fhChi2PerClusterTPC[id]->Fill(chi2PerClusterTPC);
+ fhNClustersForITSPID[id]->Fill(nITSPointsForPid);
+ fhNMissingITSPoints[id]->Fill(nMissITSpts);
fhC11[id]->Fill(extCov[0]);
fhC22[id]->Fill(extCov[2]);
}
//____________________________________________________________________
-Int_t AliESDtrackCuts::CountAcceptedTracks(AliESDEvent* const esd)
+Int_t AliESDtrackCuts::CountAcceptedTracks(const AliESDEvent* const esd)
{
//
// returns an the number of tracks that pass the cuts
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);
fhChi2PerClusterTPC[i] = new TH1F("chi2PerClusterTPC","",500,0,10);
+ fhNClustersForITSPID[i] = new TH1F("nPointsForITSpid","",5,-0.5,4.5);
+ fhNMissingITSPoints[i] = new TH1F("nMissingITSClusters","",7,-0.5,6.5);
fhC11[i] = new TH1F("covMatrixDiagonal11","",2000,0,20);
fhC22[i] = new TH1F("covMatrixDiagonal22","",2000,0,20);
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");
+ fhNClustersForITSPID[i]->SetTitle("n ITS points for PID");
+ fhNMissingITSPoints[i]->SetTitle("n ITS layers with missing cluster");
fhC11[i]->SetTitle("cov 11 : #sigma_{y}^{2} [cm^{2}]");
fhC22[i]->SetTitle("cov 22 : #sigma_{z}^{2} [cm^{2}]");
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);
+ fhNClustersForITSPID[i]->SetLineColor(color); fhNClustersForITSPID[i]->SetLineWidth(2);
+ fhNMissingITSPoints[i]->SetLineColor(color); fhNMissingITSPoints[i]->SetLineWidth(2);
fhC11[i]->SetLineColor(color); fhC11[i]->SetLineWidth(2);
fhC22[i]->SetLineColor(color); fhC22[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"));
fhChi2PerClusterTPC[i] = dynamic_cast<TH1F*> (gDirectory->Get("chi2PerClusterTPC"));
+ fhNClustersForITSPID[i] = dynamic_cast<TH1F*> (gDirectory->Get("nPointsForITSpid"));
+ fhNMissingITSPoints[i] = dynamic_cast<TH1F*> (gDirectory->Get("nMissingITSClusters"));
fhC11[i] = dynamic_cast<TH1F*> (gDirectory->Get("covMatrixDiagonal11"));
fhC22[i] = dynamic_cast<TH1F*> (gDirectory->Get("covMatrixDiagonal22"));
fhNClustersITS[i] ->Write();
fhNClustersTPC[i] ->Write();
+ fhNSharedClustersTPC[i] ->Write();
fhNCrossedRowsTPC[i] ->Write();
fhRatioCrossedRowsOverFindableClustersTPC[i] ->Write();
fhChi2PerClusterITS[i] ->Write();
fhChi2PerClusterTPC[i] ->Write();
+ fhNClustersForITSPID[i] ->Write();
+ fhNMissingITSPoints[i] ->Write();
fhC11[i] ->Write();
fhC22[i] ->Write();