TObjArray *arrNames=names.Tokenize(";");
const Int_t nDie=arrNames->GetEntries();
-Bool_t isESD = kTRUE;
+Bool_t isESD = kTRUE;
+TString periodLHC = "";
TString list = gSystem->Getenv("LIST");
-AliDielectron* ConfigJpsi_nano_PbPb(Int_t cutDefinition, Bool_t hasMC=kFALSE)
+
+AliDielectron* ConfigJpsi_nano_PbPb(Int_t cutDefinition, Bool_t hasMC=kFALSE, TString period="")
{
//
// Setup the instance of AliDielectron
//
+ periodLHC = period;
+ printf("this is -%s- filtering \n",periodLHC.Data());
+
//ESD handler?
isESD=(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()->IsA()==AliESDInputHandler::Class());
/* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
SetupEventCuts(die,cutDefinition);
SetupTrackCuts(die,cutDefinition);
- SetupV0Cuts(die,cutDefinition);
- SetupPairCuts(die,cutDefinition);
+ // SetupV0Cuts(die,cutDefinition); // switch off for nanoAODs??
+ // SetupPairCuts(die,cutDefinition);
/* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv MISC vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
// PID eta correction
- SetEtaCorrection(die);
+ //SetEtaCorrection(die); //no eta corrction
// prefilter settings
- die->SetPreFilterUnlikeOnly();
+ // if(hasMC)
+ die->SetNoPairing();
+ // else die->SetPreFilterUnlikeOnly();
//die->SetPreFilterAllSigns();
- //die->SetNoPairing();
/* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv OUTPUT vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
// histogram setup
- // InitHistograms(die,cutDefinition);
+ InitHistograms(die,cutDefinition);
+
+ // cut QA
+ die->SetCutQA();
return die;
}
if(!isESD) eventCuts->SetVertexType(AliDielectronEventCuts::kVtxAny);
eventCuts->SetRequireVertex();
eventCuts->SetMinVtxContributors(1);
- eventCuts->SetVertexZ(-10.,+10.);
+ // eventCuts->SetVertexZ(-10.,+10.);
eventCuts->SetCentralityRange(0., 90.);
eventCuts->Print();
die->GetEventFilter().AddCuts(eventCuts);
// Setup the track cuts
//
+ Bool_t hasMC=die->GetHasMC();
+
// Quality cuts
AliDielectronCutGroup* cuts = new AliDielectronCutGroup("cuts","cuts",AliDielectronCutGroup::kCompAND);
die->GetTrackFilter().AddCuts(cuts);
/* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv FILTER CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
// AOD track filter (needs to be first cut to speed up)
- // AliDielectronTrackCuts *trkFilter = new AliDielectronTrackCuts("TrkFilter","TrkFilter");
- // trkFilter->SetAODFilterBit(AliDielectronTrackCuts::kTPCqual);
+ AliDielectronTrackCuts *trkFilter = new AliDielectronTrackCuts("TrkFilter","TrkFilter");
+ trkFilter->SetAODFilterBit(AliDielectronTrackCuts::kTPCqual);
+ // trkFilter->SetAODFilterBit(AliDielectronTrackCuts::kTPCqualSPDany);
// trkFilter->SetMinNCrossedRowsOverFindable(0.6);
/* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv TRACK CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
// specific cuts
varCuts->AddCut(AliDielectronVarManager::kPt, 0.85, 1e30);
varCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9);
- // varCuts->AddCut(AliDielectronVarManager::kTPCclsSegments,7., 8.0);
+ if(periodLHC.Contains("LHC11h"))
+ varCuts->AddCut(AliDielectronVarManager::kTPCclsSegments,7., 8.0);
varCuts->AddCut(AliDielectronVarManager::kNclsTPC, 70.0, 160.0);
- trkCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 3); // SPD any
+ // trkCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 3); // SPD any
// standard cuts
varCuts->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
varCuts->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
varCuts->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0);
- varCuts->AddCut(AliDielectronVarManager::kKinkIndex0, 0.0);
+ varCuts->AddCut(AliDielectronVarManager::kKinkIndex0, 0.);
trkCuts->SetRequireITSRefit(kTRUE);
trkCuts->SetRequireTPCRefit(kTRUE);
AliDielectronPID *pidCuts = new AliDielectronPID("PIDCuts","PIDCuts");
// TOF inclusion
// pidVarCuts->AddCut(AliDielectronVarManager::kTOFbeta, 0.2, 0.9, kTRUE);
- pidCuts->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,3.,0.,0.,kFALSE,
- AliDielectronPID::kIfAvailable);
+ // pidCuts->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,3.,0.,0.,kFALSE, AliDielectronPID::kIfAvailable);
// TPC inclusion
- pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.); // when eta correction ON
+ if(periodLHC.Contains("LHC10h"))
+ pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-2.6,4.7); // when eta correction OFF (LHC10h) [-2.0,+3.]
+ // pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-4.0,4.7); // when eta correction OFF (LHC10h) [/*-2.0*/,+3.]
+ else
+ pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.0,4.3); // when eta correction OFF (LHC11h) [-1.5,+3.]
// pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-100.,4.0,0.,0.,kTRUE);
// pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-100.,3.5,0.,0.,kTRUE);
+ /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv MC PID CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
+ AliDielectronVarCuts *pidCutsMC = new AliDielectronVarCuts("PIDCutsMC","PIDCutsMC");
+ pidCutsMC->SetCutType(AliDielectronVarCuts::kAny);
+ pidCutsMC->SetCutOnMCtruth(kTRUE);
+ pidCutsMC->AddCut(AliDielectronVarManager::kPdgCode, -11., -11.);
+ pidCutsMC->AddCut(AliDielectronVarManager::kPdgCode, +11., +11.);
+
/* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv TENDER CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
// exclude conversion electrons selected by the tender
AliDielectronTrackCuts *noconv=new AliDielectronTrackCuts("noConv","noConv");
noconv->SetV0DaughterCut(AliPID::kElectron,kTRUE);
// activate the cut sets (order might be CPU timewise important)
- //if(!isESD) cuts->AddCut(trkFilter);
- cuts->AddCut(varCuts);
- cuts->AddCut(trkCuts);
- cuts->AddCut(pidCuts);
- //cuts->AddCut(pidVarCuts);
- //cuts->AddCut(noconv);
+ if(hasMC) {
+ // cuts->AddCut(pidCutsMC);
+ }
+ else {
+ if(!isESD) cuts->AddCut(trkFilter);
+ cuts->AddCut(varCuts);
+ cuts->AddCut(trkCuts);
+ cuts->AddCut(pidCuts);
+ //cuts->AddCut(pidVarCuts);
+ //cuts->AddCut(noconv);
+ }
cuts->Print();
}
//add histograms to event class
histos->AddClass("Event");
histos->UserHistogram("Event","","", 100, 0.0, 100.0, AliDielectronVarManager::kCentrality);
+ histos->UserHistogram("Event","","", 300,-15., +15.0, AliDielectronVarManager::kZvPrim);
+ // candidates monitoring
+ histos->UserProfile("Event","","", AliDielectronVarManager::kTracks, 100,0,100., AliDielectronVarManager::kCentrality);
+ histos->UserProfile("Event","","", AliDielectronVarManager::kPairs, 100,0,100., AliDielectronVarManager::kCentrality);
+
die->SetHistogramManager(histos);
}
+//______________________________________________________________________________________
void SetEtaCorrection(AliDielectron *die) {
if (AliDielectronPID::GetCentroidCorrFunction()) return;
if( !die->GetHasMC() ) {
// 2-dimensional eta correction for the centroid of electron sigmas
fCntrdCorr = new TF2("fCntrdCorr", "[0] + [1]*y + [2]*y*y + [3]*TMath::Power(y,3) + [4]*TMath::Power(y,4) + [5]*TMath::Power(y,5) + [6]*TMath::Power(y,6) + [7]*x",
- 0.0, 3000.0, -0.9, +0.9);
- fCntrdCorr->SetParameters(0.723106, 0.23958, -6.31221, -0.687976, 15.912, 0.579609, -11.6901, -0.000354381);
+ //0.0, 3000.0, -0.9, +0.9); // Nacc
+ 0.0, 90.0, -0.9, +0.9); // centrality
+ // fCntrdCorr->SetParameters(0.723106, 0.23958, -6.31221, -0.687976, 15.912, 0.579609, -11.6901, -0.000354381); // Nacc
+ fCntrdCorr->SetParameters(+0.149002, +0.214644 , -6.034930, -0.529588, +14.97902, +0.402640, -10.890027, +0.011248); // centrality
// 1-dimensional eta correction for the width of electron sigmas
- fWdthCorr = new TF1("fWdthCorr", "pol2", 0.0, 3000.0);
- fWdthCorr->SetParameters(1.06108, 0.000217804,-5.80291e-08);
+ // fWdthCorr = new TF1("fWdthCorr", "pol2", 0.0, 3000.0); // Nacc
+ // fWdthCorr->SetParameters(1.06108, 0.000217804,-5.80291e-08);
+ fWdthCorr = new TF1("fWdthCorr", "pol2", 0.0, 90.0); // centrality
+ fWdthCorr->SetParameters(+1.290755, -0.005261, +0.000021);
}
else {
/* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv MONTE CARLO vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
fCntrdCorr = new TF2("fCntrdCorr", "[0] + [1]*y + [2]*y*y + [3]*TMath::Power(y,3) + [4]*TMath::Power(y,4) + [5]*TMath::Power(y,5) + [6]*TMath::Power(y,6) + [7]*x",
0.0, 3000.0, -0.9, +0.9);
fCntrdCorr->SetParameters(+0.378611, -0.070831, -3.076778, +0.121977, +8.576097, +0.113009, -5.001368, -0.000181);
+
// 1-dimensional eta correction for the width of electron sigmas
fWdthCorr = new TF1("fWdthCorr", "pol1", 0.0, 3000.0);
fWdthCorr->SetParameters(+0.881894, +0.000053);
}
// apply corrections
- AliDielectronPID::SetCentroidCorrFunction(fCntrdCorr,AliDielectronVarManager::kNacc,AliDielectronVarManager::kEta);
- AliDielectronPID::SetWidthCorrFunction(fWdthCorr,AliDielectronVarManager::kNacc);
+ // AliDielectronPID::SetCentroidCorrFunction(fCntrdCorr,AliDielectronVarManager::kNacc,AliDielectronVarManager::kEta);
+ // AliDielectronPID::SetWidthCorrFunction(fWdthCorr,AliDielectronVarManager::kNacc);
+ AliDielectronPID::SetCentroidCorrFunction(fCntrdCorr,AliDielectronVarManager::kCentrality,AliDielectronVarManager::kEta);
+ AliDielectronPID::SetWidthCorrFunction(fWdthCorr,AliDielectronVarManager::kCentrality);
}