]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGDQ/dielectron/macrosJPSI/ConfigJpsi_nano_PbPb.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosJPSI / ConfigJpsi_nano_PbPb.C
index 2ea0077edc9433e672e0b5e8f7457f97689c0711..37c5d2f075fc6e0a0e398656e9d2f89c8489a9b5 100644 (file)
@@ -14,15 +14,20 @@ enum { kNANO=0 };
 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());
 
@@ -38,20 +43,24 @@ AliDielectron* ConfigJpsi_nano_PbPb(Int_t cutDefinition, Bool_t hasMC=kFALSE)
   /* 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;
 }
@@ -67,7 +76,7 @@ void SetupEventCuts(AliDielectron *die, Int_t cutDefinition)
   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);
@@ -81,14 +90,17 @@ void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition)
   // 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 */
@@ -97,15 +109,16 @@ void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition)
   // 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);
 
@@ -114,25 +127,40 @@ void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition)
   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();
 
 }
@@ -210,9 +238,15 @@ void InitHistograms(AliDielectron *die, Int_t cutDefinition)
   //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;
@@ -223,11 +257,15 @@ void SetEtaCorrection(AliDielectron *die) {
   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 */
@@ -235,13 +273,16 @@ void SetEtaCorrection(AliDielectron *die) {
     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);
 
 }