]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG3/dielectron/macros/ConfigJpsi2eeData.C
updates and tuning for the central train run (data and MC)
[u/mrichter/AliRoot.git] / PWG3 / dielectron / macros / ConfigJpsi2eeData.C
index 12f521a1abff6540a47a733a676084a39932b0af..884160f3cad59b70a13bc4d1ef0629942ede6a37 100644 (file)
+void SetupTrackCutsDieleData(AliDielectron *diele, Int_t cutDefinition, Bool_t isAOD);
+void SetupPairCutsDieleData(AliDielectron *diele, Int_t cutDefinition, Bool_t isAOD);
+void InitHistogramsDieleData(AliDielectron *diele, Int_t cutDefinition, Bool_t isAOD);
+void InitCFDieleData(AliDielectron *diele, Int_t cutDefinition, Bool_t isAOD);
+void SetupEventCutsDieleData(AliDielectron *diele, Int_t cutDefinition);
 
+AliESDtrackCuts *SetupESDtrackCutsDieleData(Int_t cutDefinition);
 
-void SetupTrackCuts();
-void SetupPairCuts();
-void InitHistograms();
-void InitCF();
+TString namesDieleData=("basicQ+SPDfirst+pt>.6+PID;basicQ+SPDany+pt>.6+PID");
 
-AliESDtrackCuts *SetupESDtrackCuts();
+TObjArray *arrNamesDieleData=namesDieleData.Tokenize(";");
 
-TString names=("basicQ+SPDfirst+pt>.6+PID");
+const Int_t nDie=arrNamesDieleData->GetEntries();
 
-TObjArray *arrNames=names.Tokenize(";");
-
-const Int_t nDie=arrNames->GetEntries();
-
-AliDielectron *fDiele=0x0;
-Int_t          fCutDefinition=0;
-Bool_t         fIsAOD=kFALSE;
-
-AliDielectron* ConfigJpsi2ee(Int_t fCutDefinition, Bool_t isAOD)
+AliDielectron* ConfigJpsi2ee(Int_t cutDefinition, Bool_t isAOD=kFALSE)
 {
   //
   // Setup the instance of AliDielectron
   //
   
-  fCutDefinition=fCutDefinition;
-  fIsAOD=isAOD;
-  
   // create the actual framework object
-  TString name=Form("%02d",fCutDefinition);
-  if (fCutDefinition<arrNames->GetEntriesFast()){
-    name=arrNames->At(fCutDefinition)->GetName();
+  TString name=Form("%02d",cutDefinition);
+  if (cutDefinition<arrNamesDieleData->GetEntriesFast()){
+    name=arrNamesDieleData->At(cutDefinition)->GetName();
   }
-  fDiele = new AliDielectron(Form("%s",name.Data()),
+  AliDielectron *diele = new AliDielectron(Form("%s",name.Data()),
                              Form("Track cuts: %s",name.Data()));
 
   // cut setup
-  SetupTrackCuts();
-  SetupPairCuts();
+  SetupEventCutsDieleData(diele, cutDefinition);
+  
+  SetupTrackCutsDieleData(diele, cutDefinition, isAOD);
+  SetupPairCutsDieleData(diele, cutDefinition, isAOD);
   
   //
   // histogram setup
   // only if an AliDielectronHistos object is attached to the
-  // fDielelectron framework histograms will be filled
+  // dielelectron framework histograms will be filled
   //
-  InitHistograms();
+  InitHistogramsDieleData(diele, cutDefinition, isAOD);
 
   // the last definition uses no cuts and only the QA histograms should be filled!
-//   if (fCutDefinition<nDie-1)
-  InitCF();
+//   if (cutDefinition<nDie-1)
+  InitCFDieleData(diele, cutDefinition, isAOD);
 
-  return fDiele;
+  return diele;
 }
 
 //______________________________________________________________________________________
-void SetupTrackCuts()
+void SetupEventCutsDieleData(AliDielectron *diele, Int_t cutDefinition)
+{
+  //
+  // Setup the event cuts
+  //
+  AliDielectronVarCuts *vtxZ = new AliDielectronVarCuts("vtxZ","Vertex z cut");
+  vtxZ->AddCut(AliDielectronVarManager::kZvPrim,-15.,15.);
+  diele->GetEventFilter().AddCuts(vtxZ);
+  
+}
+
+//______________________________________________________________________________________
+void SetupTrackCutsDieleData(AliDielectron *diele, Int_t cutDefinition, Bool_t isAOD)
 {
   //
   // Setup the track cuts
   //
   
   //ESD quality cuts DielectronTrackCuts
-  if (!fIsAOD) {
-    fDiele->GetTrackFilter().AddCuts(SetupESDtrackCuts());
+  if (!isAOD) {
+    diele->GetTrackFilter().AddCuts(SetupESDtrackCutsDieleData(cutDefinition));
   } else {
     AliDielectronTrackCuts *trackCuts=new AliDielectronTrackCuts("trackCuts","trackCuts");
-    trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
+    if (cutDefinition==0)
+      trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
+    else if (cutDefinition==1)
+      trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
     trackCuts->SetRequireTPCRefit(kTRUE);
     trackCuts->SetRequireITSRefit(kTRUE);
-    fDiele->GetTrackFilter().AddCuts(trackCuts);
+    diele->GetTrackFilter().AddCuts(trackCuts);
   }
 
-  if(fCutDefinition==0) {
-    //Pt cut ----------------------------------------------------------
-    AliDielectronVarCuts *pt = new AliDielectronVarCuts("ptCut","pt cut");
-    pt->AddCut(AliDielectronVarManager::kPt,0.6,1e30);
-
-    //AOD additions since there are no AliESDtrackCuts -----------------
-    //
-    if (fIsAOD){
-      // TPC #clusteres cut
-      pt->AddCut(AliDielectronVarManager::kNclsTPC,90.,160.);
-      pt->AddCut(AliDielectronVarManager::kEta,-0.8,0.8);
-      //TODO: DCA cuts to be investigated!!!
+  //Pt cut ----------------------------------------------------------
+  AliDielectronVarCuts *pt = new AliDielectronVarCuts("ptCut","pt cut");
+  pt->AddCut(AliDielectronVarManager::kPt,0.6,1e30);
+
+  //AOD additions since there are no AliESDtrackCuts -----------------
+  //
+  if (isAOD){
+    // TPC #clusteres cut
+    pt->AddCut(AliDielectronVarManager::kNclsTPC,90.,160.);
+    pt->AddCut(AliDielectronVarManager::kEta,-0.88,0.88);
+    //TODO: DCA cuts to be investigated!!!
 //       pt->AddCut(AliDielectronVarManager::kImpactParXY,-1.,1.);
 //       pt->AddCut(AliDielectronVarManager::kImpactParZ,-3.,3.);
-    }
-    fDiele->GetTrackFilter().AddCuts(pt);
-    
-    // PID cuts --------------------------------------------------------
-    AliDielectronPID *pid = new AliDielectronPID("PID10","TPC nSigma |e|<3 + |Pi|>3 + |P|>3 + TOF nSigma |e|<3");
-    pid->SetDefaults(10);
-    fDiele->GetTrackFilter().AddCuts(pid);
   }
+  diele->GetTrackFilter().AddCuts(pt);
+    
+  // PID cuts --------------------------------------------------------
+  AliDielectronPID *pid = new AliDielectronPID("PID10","TPC nSigma 2.5<e<4. + |Pi|>3 + |P|>3");
+  pid->SetDefaults(2);
+  diele->GetTrackFilter().AddCuts(pid);
 }
 
 //______________________________________________________________________________________
-void SetupPairCuts()
+void SetupPairCutsDieleData(AliDielectron *diele, Int_t cutDefinition, Bool_t isAOD)
 {
   //
   // Setup the pair cuts
   //
   
   //Invariant mass and rapidity selection
-  AliDielectronVarCuts *pairCut=new AliDielectronVarCuts("2<M<4+|Y|<.8","2<M<4 + |Y|<.8");
+  AliDielectronVarCuts *pairCut=new AliDielectronVarCuts("2<M<4+|Y|<.8","2<M<4 + |Y|<.88");
   pairCut->AddCut(AliDielectronVarManager::kM,2.,4.);
-  pairCut->AddCut(AliDielectronVarManager::kY,-0.8,0.8);
-  fDiele->GetPairFilter().AddCuts(pairCut);
+  pairCut->AddCut(AliDielectronVarManager::kY,-0.88,0.88);
+  diele->GetPairFilter().AddCuts(pairCut);
 }
 
 //______________________________________________________________________________________
-AliESDtrackCuts *SetupESDtrackCuts()
+AliESDtrackCuts *SetupESDtrackCutsDieleData(Int_t cutDefinition)
 {
   //
   // Setup default AliESDtrackCuts
@@ -120,7 +127,7 @@ AliESDtrackCuts *SetupESDtrackCuts()
   esdTrackCuts->SetMaxDCAToVertexZ(3.0);
   esdTrackCuts->SetMaxDCAToVertexXY(1.0);
   
-  esdTrackCuts->SetEtaRange( -0.8 , 0.8 );
+  esdTrackCuts->SetEtaRange( -0.88 , 0.88 );
   
   esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
   esdTrackCuts->SetRequireITSRefit(kTRUE);
@@ -129,21 +136,24 @@ AliESDtrackCuts *SetupESDtrackCuts()
   esdTrackCuts->SetMinNClustersTPC(90);
   esdTrackCuts->SetMaxChi2PerClusterTPC(4);
   
-  esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
+  if (cutDefinition==0)
+    esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
+  else if (cutDefinition==1)
+    esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
   
   return esdTrackCuts;
 }
 
 
 //______________________________________________________________________________________
-void InitHistograms()
+void InitHistogramsDieleData(AliDielectron *diele, Int_t cutDefinition, Bool_t isAOD)
 {
   //
   // Initialise the histograms
   //
   
   //Setup histogram Manager
-  AliDielectronHistos *histos=new AliDielectronHistos(fDiele->GetName(),fDiele->GetTitle());
+  AliDielectronHistos *histos=new AliDielectronHistos(diele->GetName(),diele->GetTitle());
   
   //Initialise histogram classes
   histos->SetReservedWords("Track;Pair");
@@ -165,6 +175,12 @@ void InitHistograms()
     histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i)));
   }
   
+  //add histograms to event class
+  if (cutDefinition==0){
+    histos->AddClass("Event");
+    histos->UserHistogram("Event","VtxZ","Vertex Z;Z[cm]",300,-15.,15.,AliDielectronVarManager::kZvPrim);
+  }
+  
   //add histograms to Track classes
   histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",400,0,20.,AliDielectronVarManager::kPt);
   histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNclsTPC);
@@ -172,12 +188,12 @@ void InitHistograms()
   histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",500,-1.,1.,AliDielectronVarManager::kImpactParXY);
   histos->UserHistogram("Track","dZ","dZ;dZ [cm];#tracks",600,-3.,3.,AliDielectronVarManager::kImpactParZ);
   histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
-                        200,-1,1,200,0,6.285,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
+                        100,-1,1,144,0,6.285,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
 
   histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
-                        400,0.2,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
+                        200,0.2,20.,100,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
   histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
-                        400,0.2,20.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
+                        200,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
       
   //add histograms to Pair classes
   histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
@@ -187,30 +203,29 @@ void InitHistograms()
   histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
                         100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
   
-  fDiele->SetHistogramManager(histos);
+  diele->SetHistogramManager(histos);
 }
 
 
-void InitCF()
+void InitCFDieleData(AliDielectron *diele, Int_t cutDefinition, Bool_t isAOD)
 {
   //
   // Setupd the CF Manager if needed
   //
   
-  AliDielectronCF *cf=new AliDielectronCF(fDiele->GetName(),fDiele->GetTitle());
+  AliDielectronCF *cf=new AliDielectronCF(diele->GetName(),diele->GetTitle());
   
   //pair variables
-  TVectorD *binLimPt=new TVectorD(6);
-  (*binLimPt)[0]=0.0; (*binLimPt)[1]=0.8; (*binLimPt)[2]=1.4; (*binLimPt)[3]=2.8; (*binLimPt)[4]=4.2; (*binLimPt)[5]=9.9;
-  cf->AddVariable(AliDielectronVarManager::kPt,binLimPt);
+  cf->AddVariable(AliDielectronVarManager::kPt,"0.0, 0.8, 1.4, 2.8, 5., 9.9, 100.0");
+  
   cf->AddVariable(AliDielectronVarManager::kY,40,-2,2);
-  cf->AddVariable(AliDielectronVarManager::kM,150,0.,150*.027); //27Mev Steps
+  cf->AddVariable(AliDielectronVarManager::kM,50,1.98,1.98+50*.04); //40Mev Steps
   cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);
   //leg variables
-  cf->AddVariable(AliDielectronVarManager::kPt,2,0.8,1.2,kTRUE);
-  cf->AddVariable(AliDielectronVarManager::kNclsTPC,3,90,120,kTRUE);
+  cf->AddVariable(AliDielectronVarManager::kPt,"0.0, 0.8, 1.2, 100.0",kTRUE);
+  cf->AddVariable(AliDielectronVarManager::kNclsTPC,"0, 100, 120, 160",kTRUE);
   
-  fDiele->SetCFManagerPair(cf);
+  diele->SetCFManagerPair(cf);
   
 }