]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGHF/vertexingHF/macros/AddTaskDvsMultiplicity.C
Add histograms and enlarge the Ntracklets range to 400 for pPb data analysis
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / macros / AddTaskDvsMultiplicity.C
index c725dcc49dea9a621006e09b98e4c13adc10047a..2a477e2aea90997df9c8907f388bef534689e942 100644 (file)
@@ -1,47 +1,48 @@
 AliAnalysisTaskSEDvsMultiplicity *AddTaskDvsMultiplicity(Int_t system=0,
                                                         Bool_t readMC=kFALSE,
                                                         Int_t MCOption=0,
-                                                        Int_t pdgMeson="411",
+                                                        Int_t pdgMeson=411,
                                                         TString finDirname="Loose",
                                                         TString filename="",
                                                         TString finAnObjname="AnalysisCuts", 
-                                                        TString estimatorFilename="")
+                                                        TString estimatorFilename="",
+                                                        Double_t refMult=9.26,
+                                                        Bool_t subtractDau=kFALSE,
+                                                        Bool_t NchWeight=kFALSE,
+                                                        Int_t recoEstimator = AliAnalysisTaskSEDvsMultiplicity::kNtrk10,
+                                                        Int_t MCEstimator = AliAnalysisTaskSEDvsMultiplicity::kEta10,
+                                                        Bool_t isPPbData=kFALSE)
 {
-  //                                                                                                                                    
-  // Test macro for the AliAnalysisTaskSE for D+ candidates 
-
-  //Invariant mass histogram and                                                 
-  // association with MC truth (using MC info in AOD)                                                                                   
-  //  R. Bala, bala@to.infn.it                                                                                                                                  
-  // Get the pointer to the existing analysis manager via the static access method.                                                     
-  //==============================================================================                                                      
+  //
+  // Test macro for the AliAnalysisTaskSE for D+ candidates
+  //Invariant mass histogram and    
+  // association with MC truth (using MC info in AOD)
+  //  R. Bala, bala@to.infn.it
+  // Get the pointer to the existing analysis manager via the static access method. 
+  //============================================================================== 
+  
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
   if (!mgr) {
     ::Error("AddTaskDvsMultiplicity", "No analysis manager to connect to.");
   }
-
+  
   Bool_t stdcuts=kFALSE;
-  TFile* filecuts,fileEstimator;
+  TFile* filecuts;
   if( filename.EqualTo("") ) {
     stdcuts=kTRUE; 
   } else {
-      filecuts=TFile::Open(filename.Data());
-      if(!filecuts ||(filecuts&& !filecuts->IsOpen())){
-       AliFatal("Input file not found : check your cut object");
-      }
+    filecuts=TFile::Open(filename.Data());
+    if(!filecuts ||(filecuts&& !filecuts->IsOpen())){
+      AliFatal("Input file not found : check your cut object");
+    }
   }
-  
-  
-
-                                      
 
   
-  //Analysis Task
-
- AliRDHFCuts *analysiscuts=0x0;
+  //Analysis Task  
+  AliRDHFCuts *analysiscuts=0x0;
   
TString Name;
if(pdgMeson=411){
 TString Name="";
 if(pdgMeson==411){
     if(stdcuts) {
       analysiscuts = new AliRDHFCutsDplustoKpipi();
       if (system == 0) analysiscuts->SetStandardCutsPP2010();
@@ -49,94 +50,103 @@ AliAnalysisTaskSEDvsMultiplicity *AddTaskDvsMultiplicity(Int_t system=0,
     }
     else analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(finAnObjname);
     Name="Dplus";
- }else if(pdgMeson=421){
-  
+   }else if(pdgMeson==421){
     if(stdcuts) {
       analysiscuts = new AliRDHFCutsD0toKpi();
       if (system == 0) analysiscuts->SetStandardCutsPP2010();
       else analysiscuts->SetStandardCutsPbPb2011();
     }
     else analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get(finAnObjname);
-     Name="D0";
}else if(pdgMeson=413){
-if(stdcuts) {
+    Name="D0";
 }else if(pdgMeson==413){
+    if(stdcuts) {
       analysiscuts = new AliRDHFCutsDStartoKpipi();
       if (system == 0) analysiscuts->SetStandardCutsPP2010();
       else analysiscuts->SetStandardCutsPbPb2011();
     }
     else analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get(finAnObjname);
-Name="DStar";
- }
+    Name="DStar";
 }
 
 
-  
- AliAnalysisTaskSEDvsMultiplicity *dMultTask = new AliAnalysisTaskSEDvsMultiplicity("dMultAnalysis",pdgMeson,analysiscuts);
-  dMultTask->SetReadMC(readMC);
+  AliAnalysisTaskSEDvsMultiplicity *dMultTask = new AliAnalysisTaskSEDvsMultiplicity("dMultAnalysis",pdgMeson,analysiscuts);
+  dMultTask->SetReadMC(readMC);  
   dMultTask->SetDebugLevel(0);
   dMultTask->SetUseBit(kTRUE);
-
   dMultTask->SetDoImpactParameterHistos(kFALSE);
+  dMultTask->SetSubtractTrackletsFromDaughters(subtractDau);
+  dMultTask->SetMultiplicityEstimator(recoEstimator);
+  dMultTask->SetMCPrimariesEstimator(MCEstimator);
+  dMultTask->SetMCOption(MCOption);
+  if(isPPbData) dMultTask->SetIsPPbData();
 
-  if( filename.EqualTo("") ) {
-    printf("Estimator file not provided, multiplcity corrected histograms will not be filled\n");
-  }else{
-     const Char_t* periodNames[4] = {"LHC10b", "LHC10c", "LHC10d", "LHC10e"};
-     TProfile* multEstimatorAvg[4];                       
-     TFile* fileEstimator=TFile::Open(estimatorFilename.Data());
-     if(!fileEstimator)  {
-       AliFatal("File with multiplicity estimator not found\n"); 
-       return;
-     }
-     for(Int_t ip=0; ip<4; ip++) {
-       multEstimatorAvg[ip] = (TProfile*)(fileEstimator->Get(Form("SPDmult10_%s",periodNames[ip]))->Clone(Form("SPDmult10_%s_clone",periodNames[ip])));  
-    
+  if(NchWeight){
+    TH1F *hNchPrimaries = (TH1F*)filecuts->Get("hGenPrimaryParticlesInelGt0");
+    if(hNchPrimaries) {
+      dMultTask->UseMCNchWeight(true);
+      dMultTask->SetHistoNchWeight(hNchPrimaries);
+    } else {
+      AliFatal("Histogram for multiplicity weights not found");
+      return 0x0;
+    }
+  }
 
-     }
-     SetMultiplVsZProfileLHC10b(multEstimatorAvg[0]);
-     SetMultiplVsZProfileLHC10c(multEstimatorAvg[1]);
-     SetMultiplVsZProfileLHC10d(multEstimatorAvg[2]);
-     SetMultiplVsZProfileLHC10e(multEstimatorAvg[3]);
+  if(pdgMeson==421) { 
+    dMultTask->SetMassLimits(1.5648,2.1648);
+    dMultTask->SetNMassBins(200);
+  }else if(pdgMeson==411)dMultTask->SetMassLimits(pdgMeson,0.2);
+  
+  if(estimatorFilename.EqualTo("") ) {
+    printf("Estimator file not provided, multiplcity corrected histograms will not be filled\n");
+  } else{
+    const Char_t* periodNames[4] = {"LHC10b", "LHC10c", "LHC10d", "LHC10e"};
+    TProfile* multEstimatorAvg[4];                       
+    TFile* fileEstimator=TFile::Open(estimatorFilename.Data());
+    if(!fileEstimator)  {
+      AliFatal("File with multiplicity estimator not found\n"); 
+      return;
+    }
+    for(Int_t ip=0; ip<4; ip++) {
+      multEstimatorAvg[ip] = (TProfile*)(fileEstimator->Get(Form("SPDmult10_%s",periodNames[ip]))->Clone(Form("SPDmult10_%s_clone",periodNames[ip])));  
+    }
+    dMultTask->SetMultiplVsZProfileLHC10b(multEstimatorAvg[0]);
+    dMultTask->SetMultiplVsZProfileLHC10c(multEstimatorAvg[1]);
+    dMultTask->SetMultiplVsZProfileLHC10d(multEstimatorAvg[2]);
+    dMultTask->SetMultiplVsZProfileLHC10e(multEstimatorAvg[3]);
+    dMultTask->SetReferenceMultiplcity(refMult);
   }
   mgr->AddTask(dMultTask);
   
   // Create containers for input/output 
-
+  
   TString inname = "cinput";
   TString outname = "coutput";
   TString cutsname = "coutputCuts";
   TString normname = "coutputNorm";
+  TString profname = "coutputProf";
+  
+  inname += Name.Data();
+  outname += Name.Data();
+  cutsname += Name.Data();
+  normname += Name.Data();
+  profname += Name.Data();
   inname += finDirname.Data();
   outname += finDirname.Data();
   cutsname += finDirname.Data();
   normname += finDirname.Data();
-  
-    
+  profname += finDirname.Data();
 
+  AliAnalysisDataContainer *cinput = mgr->CreateContainer(inname,TChain::Class(),AliAnalysisManager::kInputContainer);
 
-TString contname=Form("cinput%s",Name.Data());
-  AliAnalysisDataContainer *cinput = mgr->CreateContainer(contname.Data(),TChain::Class(),
-                                                              AliAnalysisManager::kInputContainer);
   TString outputfile = AliAnalysisManager::GetCommonFileName();
-  outputfile += ":PWG3_D2H_DMult";
-  
- contname=Form("coutputCuts%s",Name.Data());
-  AliAnalysisDataContainer *coutputCuts = mgr->CreateContainer(contname.Data(),TList::Class(),
-                                                                   AliAnalysisManager::kOutputContainer,
-                                                                   outputfile.Data());
-  
- contname=Form("coutput%s",Name.Data());
-  AliAnalysisDataContainer *coutput = mgr->CreateContainer(contname.Data(),TList::Class(),
-                                                               AliAnalysisManager::kOutputContainer,
-                                                               outputfile.Data());
- contname=Form("coutputNorm%s",Name.Data());  
-AliAnalysisDataContainer *coutputNorm = mgr->CreateContainer(contname.Data(),TList::Class(),
-                                                               AliAnalysisManager::kOutputContainer,
-                                                               outputfile.Data());
-  
+  outputfile += ":PWG3_D2H_DMult_";
+  outputfile += Name.Data(); 
+  outputfile += finDirname.Data(); 
+    
+  AliAnalysisDataContainer *coutputCuts = mgr->CreateContainer(cutsname,TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
+  AliAnalysisDataContainer *coutput = mgr->CreateContainer(outname,TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
+  AliAnalysisDataContainer *coutputNorm = mgr->CreateContainer(normname,TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
+  AliAnalysisDataContainer *coutputProf = mgr->CreateContainer(profname,TList::Class(),AliAnalysisManager::kOutputContainer,outputfile.Data());
   
   mgr->ConnectInput(dMultTask,0,mgr->GetCommonInputContainer());
   
@@ -145,6 +155,8 @@ AliAnalysisDataContainer *coutputNorm = mgr->CreateContainer(contname.Data(),TLi
   mgr->ConnectOutput(dMultTask,2,coutputCuts);
 
   mgr->ConnectOutput(dMultTask,3,coutputNorm);  
+
+  mgr->ConnectOutput(dMultTask,4,coutputProf);
+
   return dMultTask;
 }