]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG3/vertexingHF/AddTaskDplus.C
Dplus and Ds tasks use the new cuts classes (Francesco, Renu, Giacomo)
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AddTaskDplus.C
index 039cc6cf0b67c9c51cdbb1eda27758ff3a7ccf18..8a1a6bb644f45eedd68bfa42d7941c2ee6a90308 100644 (file)
@@ -1,12 +1,12 @@
-AliAnalysisTaskSEDplus *AddTaskDplus()
+AliAnalysisTaskSEDplus *AddTaskDplus(Bool_t storeNtuple=kFALSE,
+                                    Bool_t readMC=kTRUE)
 {
   //                                                                                                                                    
-  // Test macro for the AliAnalysisTaskSE for heavy-flavour candidates                                                                  
-  // association with MC truth (using MC info in AOD)                                                                                   
-                                                                                               
-  //                                                                                                                                    
-
+  // 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();
@@ -15,33 +15,151 @@ AliAnalysisTaskSEDplus *AddTaskDplus()
     return NULL;
   }
 
+  //ptbins
+  const Int_t nptbins=4;
+  Float_t* ptbins;
+  ptbins=new Float_t[nptbins+1];
+  ptbins[0]=0.;
+  ptbins[1]=2.;
+  ptbins[2]=3.;
+  ptbins[3]=5.;
+  ptbins[4]=99999.;
+  const Int_t nvars=12;
+
+  
+
+
+  Float_t** prodcutsval;
+  prodcutsval=new Float_t*[nvars];
+  for(Int_t ic=0;ic<nvars;ic++){prodcutsval[ic]=new Float_t[nptbins];}  
+  for(Int_t ipt=0;ipt<nptbins;ipt++){
+    prodcutsval[0][ipt]=0.2;
+    prodcutsval[1][ipt]=0.4;
+    prodcutsval[2][ipt]=0.4;
+    prodcutsval[3][ipt]=0.;
+    prodcutsval[4][ipt]=0.;
+    prodcutsval[5][ipt]=0.001;
+    prodcutsval[6][ipt]=0.006;
+    prodcutsval[7][ipt]=0.02;
+    prodcutsval[8][ipt]=0.;
+    prodcutsval[9][ipt]=0.85;
+    prodcutsval[10][ipt]=0.;
+    prodcutsval[11][ipt]=10000000.0;
+    
+  }
+
+
+
+ Float_t** anacutsval;
+  anacutsval=new Float_t*[nvars];
+  for(Int_t ic=0;ic<nvars;ic++){anacutsval[ic]=new Float_t[nptbins];}
+ //Double_t cutsDplus[12]={0.2,0.4,0.4,0.,0.,0.01,0.06,0.02,0.,0.85,0.,10000000000.};
+   Int_t ic=0;
+   for(Int_t ipt=0;ipt<nptbins;ipt++){
+     anacutsval[ic][ipt]=0.2;
+   }
+   Int_t ic=1;
+   for(Int_t ipt=0;ipt<nptbins;ipt++){
+     anacutsval[ic][ipt]=0.4;
+   }
+   Int_t ic=2;
+   for(Int_t ipt=0;ipt<nptbins;ipt++){
+     anacutsval[ic][ipt]=0.4;
+   }
+   Int_t ic=3;
+   for(Int_t ipt=0;ipt<nptbins;ipt++){
+     anacutsval[ic][ipt]=0.;
+   }
+   Int_t ic=4;
+   for(Int_t ipt=0;ipt<nptbins;ipt++){
+     anacutsval[ic][ipt]=0.;
+   }
+   Int_t ic=5;
+   for(Int_t ipt=0;ipt<nptbins;ipt++){
+     anacutsval[ic][ipt]=0.01;
+   }
+   Int_t ic=11;
+   for(Int_t ipt=0;ipt<nptbins;ipt++){
+     anacutsval[ic][ipt]=10000000000.;
+   }
+   anacutsval[6][0]=0.022100;
+   anacutsval[6][1]=0.034;
+   anacutsval[6][2]=0.020667;
+   anacutsval[6][3]=0.023333;
+
+   anacutsval[7][0]=0.08;
+   anacutsval[7][1]=0.09;
+   anacutsval[7][2]=0.095;
+   anacutsval[7][3]=0.115;
+
+   anacutsval[8][0]=0.5;
+   anacutsval[8][1]=1.0;
+   anacutsval[8][2]=0.5;
+   anacutsval[8][3]=0.5;
+
+   anacutsval[9][0]=0.979;
+   anacutsval[9][1]=0.9975;
+   anacutsval[9][2]=0.995;
+   anacutsval[9][3]=0.9975;
+
+   anacutsval[10][0]=0.0055;
+   anacutsval[10][1]=0.0028;
+   anacutsval[10][2]=0.000883;
+   anacutsval[10][3]=0.000883;
 
-  // Aanalysis task                                                                                                                     
-  AliAnalysisTaskSEDplus *dplusTask = new AliAnalysisTaskSEDplus("DplusAnalysis");
+
+
+//Production cuts
+
+  AliRDHFCutsDplustoKpipi *prodcuts = new AliRDHFCutsDplustoKpipi();
+  prodcuts->SetPtBins(nptbins+1,ptbins);
+  prodcuts->SetCuts(nvars,nptbins,prodcutsval);
+
+  //Analysis cuts
+  AliRDHFCutsDplustoKpipi *analysiscuts = new AliRDHFCutsDplustoKpipi();
+  analysiscuts->SetPtBins(nptbins+1,ptbins);
+  analysiscuts->SetCuts(nvars,nptbins,anacutsval);
+
+
+  // Aanalysis task
+  AliAnalysisTaskSEDplus *dplusTask = new AliAnalysisTaskSEDplus("DplusAnalysis",analysiscuts,prodcuts,storeNtuple);
+  dplusTask->SetReadMC(readMC);
+  dplusTask->SetDoLikeSign(kTRUE);
   dplusTask->SetDebugLevel(0);
+
   mgr->AddTask(dplusTask);
 
-  //                                                                                                                                    
-  // Create containers for input/output                                                                                                 
+ // Create containers for input/output 
+
   AliAnalysisDataContainer *cinputDplus = mgr->CreateContainer("cinputDplus",TChain::Class(),
                                                           AliAnalysisManager::kInputContainer);
+  TString outputfile = AliAnalysisManager::GetCommonFileName();
+  outputfile += ":PWG3_D2H_InvMassDplus";
+
+ AliAnalysisDataContainer *coutputDplusCuts = mgr->CreateContainer("coutputDplusCuts",TList::Class(),
+                                                            AliAnalysisManager::kOutputContainer,
+                                                               outputfile.Data());
   AliAnalysisDataContainer *coutputDplus = mgr->CreateContainer("coutputDplus",TList::Class(),
                                                            AliAnalysisManager::kOutputContainer,
-                                                           "InvMassDplus.root");
-  AliAnalysisDataContainer *coutputDplus2 = mgr->CreateContainer("coutputDplus2",TNtuple::Class(),
+                                                               outputfile.Data());
+
+  if(storeNtuple){
+    AliAnalysisDataContainer *coutputDplus2 = mgr->CreateContainer("coutputDplus2",TNtuple::Class(),
                                                            AliAnalysisManager::kOutputContainer,
                                                                 "InvMassDplus_nt1.root");
-  AliAnalysisDataContainer *coutputDplus3 = mgr->CreateContainer("coutputDplus3",TNtuple::Class(),
-                                                           AliAnalysisManager::kOutputContainer,
-                                                                "InvMassDplus_nt2.root");
-  coutputDplus2->SetSpecialOutput();
-  coutputDplus3->SetSpecialOutput();
 
+    coutputDplus2->SetSpecialOutput();
+  }
   mgr->ConnectInput(dplusTask,0,mgr->GetCommonInputContainer());
 
   mgr->ConnectOutput(dplusTask,1,coutputDplus);
-  mgr->ConnectOutput(dplusTask,2,coutputDplus2);
-  mgr->ConnectOutput(dplusTask,3,coutputDplus3);
 
+  mgr->ConnectOutput(dplusTask,2,coutputDplusCuts);
+  
+  if(storeNtuple){
+    mgr->ConnectOutput(dplusTask,3,coutputDplus2);
+  }
   return dplusTask;
 }