]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/macros/AddTaskPWG4HighPtSpectra.C
Adding TPRofiles for mean and sigma(pT), clean up of EP from tracks, added EP from...
[u/mrichter/AliRoot.git] / PWG4 / macros / AddTaskPWG4HighPtSpectra.C
index 32273dd5ec8d6664eb53bfd114a920982dbf4b4a..3738018ddd71ec8a04cabc8edeb411b85df53ef8 100644 (file)
@@ -1,4 +1,6 @@
 //DEFINITION OF A FEW CONSTANTS
+#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
+
 const Float_t phimin = 0.;
 const Float_t phimax = 2.*TMath::Pi();
 const Float_t etamin = -0.9;
@@ -6,12 +8,54 @@ const Float_t etamax = 0.9;
 
 const Int_t   mintrackrefsTPC = 1;
 const Int_t   mintrackrefsITS = 1;
-const Int_t   charge  = 1;
 
-AliPWG4HighPtSpectra* AddTaskPWG4HighPtSpectra(char *prodType = "LHC10e14")
+void AddTaskPWG4HighPtSpectraAll(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0)
+{
+  int cent = 10;
+
+  AliPWG4HighPtSpectra *taskSpectra00cent10 = AddTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,0);
+  AliPWG4HighPtSpectra *taskSpectra01cent10 = AddTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,1);
+  AliPWG4HighPtSpectra *taskSpectra02cent10 = AddTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,2);
+  //  AliPWG4HighPtSpectra *taskSpectra10cent10 = AddTaskPWG4HighPtSpectra(prodType,isPbPb,cent,1,0);
+  //  AliPWG4HighPtSpectra *taskSpectra20cent10 = AddTaskPWG4HighPtSpectra(prodType,isPbPb,cent,2,0);
+  AliPWG4HighPtSpectra *taskSpectra70cent10 = AddTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,0);
+  AliPWG4HighPtSpectra *taskSpectra71cent10 = AddTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,1);
+
+  if(isPbPb) {
+    for(cent=0; cent<4; cent++) {
+      AliPWG4HighPtSpectra *taskSpectra00 = AddTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,0);
+      AliPWG4HighPtSpectra *taskSpectra01 = AddTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,1);
+      AliPWG4HighPtSpectra *taskSpectra02 = AddTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,2);
+      //      AliPWG4HighPtSpectra *taskSpectra10 = AddTaskPWG4HighPtSpectra(prodType,isPbPb,cent,1,0);
+      //      AliPWG4HighPtSpectra *taskSpectra20 = AddTaskPWG4HighPtSpectra(prodType,isPbPb,cent,2,0);
+      AliPWG4HighPtSpectra *taskSpectra70 = AddTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,0);
+      AliPWG4HighPtSpectra *taskSpectra71 = AddTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,1);
+    }
+  }
+
+}
+
+
+AliPWG4HighPtSpectra* AddTaskPWG4HighPtSpectra(char *prodType = "LHC10e14", Bool_t isPbPb=kTRUE,Int_t centClass = 0, Int_t trackType = 0, Int_t cuts = 0)
 {
+
+  /*
+    trackType: 0 = global
+               1 = TPC stand alone
+               2 = TPC stand alone constrained to SPD vertex
+    cuts:      0 (global) = standard ITSTPC2010 a la RAA analysis
+               1 (global) = ITSrefit, no SPD requirements -> standard for jet analysis
+               2 (global) = ITSrefit + no hits in SPD
+              3 (global) = standard ITS tight cuts with nCrossed rows cut for hybrid tracks
+               0 (TPC)    = standard TPC + NClusters>70
+               1 (TPC)    = standard TPC + NClusters>0 --> to study new TPC QA recommendations
+   */
+
   // Creates HighPtSpectra analysis task and adds it to the analysis manager.
   
+  //Load common track cut class
+  gROOT->LoadMacro("$ALICE_ROOT/PWG4/macros/CreateTrackCutsPWG4.C");
+
   // A. Get the pointer to the existing analysis manager via the static access method.
   //==============================================================================
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
@@ -40,46 +84,36 @@ AliPWG4HighPtSpectra* AddTaskPWG4HighPtSpectra(char *prodType = "LHC10e14")
   UInt_t ieta  = 2;
 
   //Setting up the container grid... 
-  UInt_t nstep = 6; //Steps/Modes for containers
-  Int_t kStepReconstructed = 0;
-  Int_t kStepReconstructedTPCOnly = 1;
-  Int_t kStepSecondaries = 2;
-  Int_t kStepReconstructedMC = 3;
-  Int_t kStepMCAcceptance = 4;
-  Int_t kStepReconstructedTPCOnlyMC = 5;
+  UInt_t nstep = 4; //Steps/Modes for containers
+  Int_t kStepReconstructed          = 0;
+  Int_t kStepSecondaries            = 1;
+  Int_t kStepReconstructedMC        = 2;
+  Int_t kStepMCAcceptance           = 3;
 
   //redefine pt ranges in case of Jet-Jet production
-  Float_t ptBinEdges[2][2];
-  Float_t ptmin =  2.0 ;
-  Float_t ptmax =  50.0 ;
-  Float_t binWidth3 = 5.;
-  if(!strcmp(prodType, "LHC10e14") || !strcmp(prodType, "PbPb")) { 
-    ptmin =  0.0 ;
-    ptmax =  500.0 ;
-
-    ptBinEdges[0][0] = 100.;
-    ptBinEdges[0][1] = 5.;
-    ptBinEdges[1][0] = 300.;
-    ptBinEdges[1][1] = 10.;
-    binWidth3 = 20.;
-  } else { 
-    ptmin =  2.0 ;
-    ptmax =  50.0 ;
-    
-    ptBinEdges[0][0] = 10.;
-    ptBinEdges[0][1] = 1.;
-    ptBinEdges[1][0] = 20.;
-    ptBinEdges[1][1] = 2.;
-    binWidth3 = 5.;
-  }
-    
+  Float_t ptBinEdges[4][4];
+  Float_t ptmin =  0.0 ;
+  Float_t ptmax =  100.0 ;
+
+  ptBinEdges[0][0] = 2.;
+  ptBinEdges[0][1] = 0.2;
+  ptBinEdges[1][0] = 6.;
+  ptBinEdges[1][1] = 0.5;
+  ptBinEdges[2][0] = 20.;
+  ptBinEdges[2][1] = 2.;
+  ptBinEdges[3][0] = 100.;
+  ptBinEdges[3][1] = 5.;
+  
   const Int_t nvar   = 3; //number of variables on the grid: pt:phi:eta
-  const Int_t nbin11 = (int)((ptBinEdges[0][0]-ptmin)/ptBinEdges[0][1]);
-  const Int_t nbin12 = (int)((ptBinEdges[1][0]-ptBinEdges[0][0])/ptBinEdges[1][1])+nbin11;
-  const Int_t nbin13 = (int)((ptmax-ptBinEdges[1][0])/binWidth3)+nbin12;
-  const Int_t nbin1  = nbin13; //bins in pt 
-  const Int_t nbin2  =  18;//36; //bins in phi
-  const Int_t nbin3  =  8; //bins in eta
+
+  const Int_t nbin11 = round((ptBinEdges[0][0]-ptmin)/ptBinEdges[0][1]);
+  const Int_t nbin12 = round((ptBinEdges[1][0]-ptBinEdges[0][0])/ptBinEdges[1][1])+nbin11;
+  const Int_t nbin13 = round((ptBinEdges[2][0]-ptBinEdges[1][0])/ptBinEdges[2][1])+nbin12;
+  const Int_t nbin14 = round((ptBinEdges[3][0]-ptBinEdges[2][0])/ptBinEdges[3][1])+nbin13;
+
+  const Int_t nbin1  = nbin14; //bins in pt 
+  const Int_t nbin2  =  18;    //bins in phi
+  const Int_t nbin3  =  2;     //bins in eta
 
   //arrays for the number of bins in each dimension
   Int_t iBin[nvar];
@@ -95,8 +129,9 @@ AliPWG4HighPtSpectra* AddTaskPWG4HighPtSpectra(char *prodType = "LHC10e14")
   //values for bin lower bounds 
   for(Int_t i=0; i<=nbin1; i++) {
     if(i<=nbin11) binLim1[i]=(Double_t)ptmin + (ptBinEdges[0][0]-ptmin)/nbin11*(Double_t)i ;  
-    if(i<=nbin12 && i>nbin11) binLim1[i]=(Double_t)ptBinEdges[0][0] + (ptBinEdges[1][0]-ptBinEdges[0][0])/(nbin12-nbin11)*((Double_t)i-(Double_t)nbin11) ;  
-    if(i<=nbin13 && i>nbin12) binLim1[i]=(Double_t)ptBinEdges[1][0] + (ptmax-ptBinEdges[1][0])/(nbin13-nbin12)*((Double_t)i-(Double_t)nbin12) ;  
+    if(i<=nbin12 && i>nbin11) binLim1[i]=(Double_t)ptBinEdges[0][0] + (ptBinEdges[1][0]-ptBinEdges[0][0])/(nbin12-nbin11)*((Double_t)i-(Double_t)nbin11) ; 
+    if(i<=nbin13 && i>nbin12) binLim1[i]=(Double_t)ptBinEdges[1][0] + (ptBinEdges[2][0]-ptBinEdges[1][0])/(nbin13-nbin12)*((Double_t)i-(Double_t)nbin12) ; 
+    if(i<=nbin14 && i>nbin13) binLim1[i]=(Double_t)ptBinEdges[2][0] + (ptBinEdges[3][0]-ptBinEdges[2][0])/(nbin14-nbin13)*((Double_t)i-(Double_t)nbin13) ; 
   }
   for(Int_t i=0; i<=nbin2; i++) binLim2[i]=(Double_t)phimin + (phimax-phimin)/nbin2*(Double_t)i ;
   for(Int_t i=0; i<=nbin3; i++) binLim3[i]=(Double_t)etamin + (etamax-etamin)/nbin3*(Double_t)i ;  
@@ -117,16 +152,42 @@ AliPWG4HighPtSpectra* AddTaskPWG4HighPtSpectra(char *prodType = "LHC10e14")
   //CREATE THE  CUTS -----------------------------------------------
   //Use AliESDtrackCuts
   AliESDtrackCuts *trackCuts = new AliESDtrackCuts("AliESDtrackCuts","Standard Cuts");
-  trackCuts = trackCuts->GetStandardITSTPCTrackCuts2010(kTRUE);//Primary Track Quality Selection for Global tracks
+  AliESDtrackCuts *trackCutsReject = 0x0;
+  //Standard Cuts
+  //Set track cuts for global tracks
+  if(trackType==0 && cuts==0) {
+    // tight global tracks - RAA analysis
+    trackCuts = CreateTrackCutsPWG4(1000);
+  }
+  if(trackType==0 && cuts==1) {
+    //Cuts global tracks with ITSrefit requirement and SPDrequirement for jet analysis
+    trackCuts = CreateTrackCutsPWG4(10001001);
+  }
+  if(trackType==0 && cuts==2) {
+    //Cuts global tracks with ITSrefit requirement but without SPD
+    trackCuts = CreateTrackCutsPWG4(10011001);
+  }
+  if(trackType==7 && cuts==0) {
+    // tight global tracks
+    trackCuts = CreateTrackCutsPWG4(10041001);
+    trackCutsReject = CreateTrackCutsPWG4(1001);
+  }
+  if(trackType==7 && cuts==1) {
+    // tight global tracks
+    trackCuts = CreateTrackCutsPWG4(10011001);
+  }
+
+  if(trackType==1 && cuts==0) {
+    //Set track cuts for TPConly tracks
+    trackCuts = CreateTrackCutsPWG4(2001);
+  }
+  if(trackType==2 && cuts==0) {
+     //              Set track cuts for TPConly constrained tracks
+    trackCuts = CreateTrackCutsPWG4(2001);
+  }
   trackCuts->SetEtaRange(-0.9,0.9);
   trackCuts->SetPtRange(0.15, 1e10);
 
-  AliESDtrackCuts *trackCutsTPConly = new AliESDtrackCuts("AliESDtrackCuts","Standard Cuts TPC only tracks");
-  trackCutsTPConly = trackCutsTPConly->GetStandardTPCOnlyTrackCuts();//TPC only Track Quality Cuts
-  trackCutsTPConly->SetEtaRange(-0.9,0.9);
-  trackCutsTPConly->SetPtRange(0.15, 1e10);
-  trackCutsTPConly->SetMinNClustersTPC(70);
-
   // Gen-Level kinematic cuts
   AliCFTrackKineCuts *mcKineCuts = new AliCFTrackKineCuts("mcKineCuts","MC-level kinematic cuts");
   mcKineCuts->SetPtRange(0.15,1e10);
@@ -139,10 +200,8 @@ AliPWG4HighPtSpectra* AddTaskPWG4HighPtSpectra(char *prodType = "LHC10e14")
   mcAccCuts->SetMinNHitTPC(mintrackrefsTPC);
 
   TObjArray* recList = new TObjArray(0);
-  TObjArray* recTPConlyList = new TObjArray(0);
   TObjArray* secList = new TObjArray(0) ;
   TObjArray* recMCList = new TObjArray(0);
-  TObjArray* recTPConlyMCList = new TObjArray(0);
 
   printf("CREATE MC KINE CUTS\n");
   TObjArray* mcList = new TObjArray(0) ;
@@ -154,29 +213,31 @@ AliPWG4HighPtSpectra* AddTaskPWG4HighPtSpectra(char *prodType = "LHC10e14")
   AliCFManager* manPos = new AliCFManager("manPos","Manager for Positive tracks") ;
   manPos->SetParticleContainer(containerPos);
   manPos->SetParticleCutsList(kStepReconstructed,recList);
-  manPos->SetParticleCutsList(kStepReconstructedTPCOnly,recTPConlyList);
   manPos->SetParticleCutsList(kStepSecondaries,secList);
   manPos->SetParticleCutsList(kStepReconstructedMC,recMCList);
   manPos->SetParticleCutsList(kStepMCAcceptance,mcList);
-  manPos->SetParticleCutsList(kStepReconstructedTPCOnlyMC,recTPConlyMCList);
 
   AliCFManager* manNeg = new AliCFManager("manNeg","Manager for Negative tracks") ;
   manNeg->SetParticleContainer(containerNeg);
   manNeg->SetParticleCutsList(kStepReconstructed,recList);
-  manNeg->SetParticleCutsList(kStepReconstructedTPCOnly,recTPConlyList);
   manNeg->SetParticleCutsList(kStepSecondaries,secList);
   manNeg->SetParticleCutsList(kStepReconstructedMC,recMCList);
   manNeg->SetParticleCutsList(kStepMCAcceptance,mcList);
-  manNeg->SetParticleCutsList(kStepReconstructedTPCOnlyMC,recTPConlyMCList);
 
 
-  printf("Create task AliPWG4HighPtSpectra\n");
-  AliPWG4HighPtSpectra *taskPWG4HighPtSpectra = new AliPWG4HighPtSpectra("taskPWG4HighPtSpectra");
+  AliPWG4HighPtSpectra *taskPWG4HighPtSpectra = new AliPWG4HighPtSpectra(Form("AliPWG4HighPtSpectraCent%dTrackType%dCuts%d",centClass,trackType,cuts));
+  taskPWG4HighPtSpectra->SetTrackType(trackType);
   taskPWG4HighPtSpectra->SetCuts(trackCuts);
-  taskPWG4HighPtSpectra->SetCutsTPConly(trackCutsTPConly);
+  taskPWG4HighPtSpectra->SetCutsReject(trackCutsReject);
   taskPWG4HighPtSpectra->SetCFManagerPos(manPos); //here is set the CF manager +
   taskPWG4HighPtSpectra->SetCFManagerNeg(manNeg); //here is set the CF manager -
 
+  if(isPbPb) {
+    taskPWG4HighPtSpectra->SetIsPbPb(kTRUE);
+    taskPWG4HighPtSpectra->SetCentralityClass(centClass);
+  }
+  taskPWG4HighPtSpectra->SetSigmaConstrainedMax(5.);
+
 
   // E. Create ONLY the output containers for the data produced by the task.
   // Get and connect other common input/output containers via the manager as below
@@ -184,13 +245,12 @@ AliPWG4HighPtSpectra* AddTaskPWG4HighPtSpectra(char *prodType = "LHC10e14")
 
   //------ output containers ------
   TString outputfile = AliAnalysisManager::GetCommonFileName();
-  outputfile += ":PWG4_HighPtSpectra"; 
+  outputfile += Form(":PWG4_HighPtSpectraCent%dTrackType%dCuts%d",centClass,trackType,cuts);
 
-  AliAnalysisDataContainer *coutput0 = mgr->CreateContainer("chist0HighPtSpectra", TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
-  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("ccontainer0HighPtSpectra", AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile);
-  AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("ccontainer1HighPtSpectra", AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile);
-  AliAnalysisDataContainer *cout_cuts0 = mgr->CreateContainer("qa_trackCuts", AliESDtrackCuts::Class(), AliAnalysisManager::kParamContainer,outputfile);
-  AliAnalysisDataContainer *cout_cuts1 = mgr->CreateContainer("qa_trackCutsTPConly", AliESDtrackCuts::Class(), AliAnalysisManager::kParamContainer,outputfile);
+  AliAnalysisDataContainer *coutput0 = mgr->CreateContainer(Form("chist0HighPtSpectraCent%dTrackType%dCuts%d",centClass,trackType,cuts), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
+  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(Form("ccontainer0HighPtSpectraCent%dTrackType%dCuts%d",centClass,trackType,cuts), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile);
+  AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(Form("ccontainer1HighPtSpectraCent%dTrackType%dCuts%d",centClass,trackType,cuts), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile);
+  AliAnalysisDataContainer *cout_cuts0 = mgr->CreateContainer(Form("qa_SpectraTrackCutsCent%dTrackType%dCuts%d",centClass,trackType,cuts), AliESDtrackCuts::Class(), AliAnalysisManager::kParamContainer,outputfile);
 
   mgr->AddTask(taskPWG4HighPtSpectra);
 
@@ -199,7 +259,6 @@ AliPWG4HighPtSpectra* AddTaskPWG4HighPtSpectra(char *prodType = "LHC10e14")
   mgr->ConnectOutput(taskPWG4HighPtSpectra,1,coutput1);
   mgr->ConnectOutput(taskPWG4HighPtSpectra,2,coutput2);
   mgr->ConnectOutput(taskPWG4HighPtSpectra,3,cout_cuts0);
-  mgr->ConnectOutput(taskPWG4HighPtSpectra,4,cout_cuts1);
 
   // Return task pointer at the end
   return taskPWG4HighPtSpectra;