]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Possibility to set the pt bin width from the AddTaskMacro (Francesco, Christian)
authorfprino <prino@to.infn.it>
Mon, 11 Aug 2014 11:43:26 +0000 (13:43 +0200)
committerfprino <prino@to.infn.it>
Mon, 11 Aug 2014 11:43:55 +0000 (13:43 +0200)
PWGHF/vertexingHF/AliAnalysisTaskCombinHF.cxx
PWGHF/vertexingHF/AliAnalysisTaskCombinHF.h
PWGHF/vertexingHF/macros/AddTaskCombinHF.C

index c1ba000745c331e5134b4acb65691a736cbd17bc..866116da9bc8a2ede45620e9ace8f9b728a1d513 100644 (file)
@@ -78,6 +78,7 @@ AliAnalysisTaskCombinHF::AliAnalysisTaskCombinHF():
   fMinMass(1.720),
   fMaxMass(2.150),
   fMaxPt(10.),
+  fPtBinWidth(0.5),
   fEtaAccCut(0.9),
   fPtAccCut(0.1),
   fNRotations(9),
@@ -137,6 +138,7 @@ AliAnalysisTaskCombinHF::AliAnalysisTaskCombinHF(Int_t meson, AliRDHFCuts* analy
   fMinMass(1.720),
   fMaxMass(2.150),
   fMaxPt(10.),
+  fPtBinWidth(0.5),
   fEtaAccCut(0.9),
   fPtAccCut(0.1),
   fNRotations(9),
@@ -240,8 +242,9 @@ void AliAnalysisTaskCombinHF::UserCreateOutputObjects()
   fHistTrackStatus->SetMinimum(0);
   fOutput->Add(fHistTrackStatus);
   
-  Int_t nPtBins = fMaxPt*10;
-  
+  Int_t nPtBins = (Int_t)(fMaxPt/fPtBinWidth+0.001);
+  Double_t maxPt=fPtBinWidth*nPtBins;
+
   if(fReadMC){
     
     fHistCheckOrigin=new TH1F("hCheckOrigin","",7,-1.5,5.5);
@@ -264,27 +267,27 @@ void AliAnalysisTaskCombinHF::UserCreateOutputObjects()
     fHistCheckDecChanAcc->SetMinimum(0);
     fOutput->Add(fHistCheckDecChanAcc);
     
-    fPtVsYGen= new TH2F("hPtVsYGen","",nPtBins,0.,fMaxPt,20,-1.,1.);
+    fPtVsYGen= new TH2F("hPtVsYGen","",nPtBins,0.,maxPt,20,-1.,1.);
     fPtVsYGen->Sumw2();
     fPtVsYGen->SetMinimum(0);
     fOutput->Add(fPtVsYGen);
     
-    fPtVsYGenLargeAcc= new TH2F("hPtVsYGenLargeAcc","",nPtBins,0.,fMaxPt,20,-1.,1.);
+    fPtVsYGenLargeAcc= new TH2F("hPtVsYGenLargeAcc","",nPtBins,0.,maxPt,20,-1.,1.);
     fPtVsYGenLargeAcc->Sumw2();
     fPtVsYGenLargeAcc->SetMinimum(0);
     fOutput->Add(fPtVsYGenLargeAcc);
     
-    fPtVsYGenLimAcc= new TH2F("hPtVsYGenLimAcc","",nPtBins,0.,fMaxPt,20,-1.,1.);
+    fPtVsYGenLimAcc= new TH2F("hPtVsYGenLimAcc","",nPtBins,0.,maxPt,20,-1.,1.);
     fPtVsYGenLimAcc->Sumw2();
     fPtVsYGenLimAcc->SetMinimum(0);
     fOutput->Add(fPtVsYGenLimAcc);
     
-    fPtVsYGenAcc= new TH2F("hPtVsYGenAcc","",nPtBins,0.,fMaxPt,20,-1.,1.);
+    fPtVsYGenAcc= new TH2F("hPtVsYGenAcc","",nPtBins,0.,maxPt,20,-1.,1.);
     fPtVsYGenAcc->Sumw2();
     fPtVsYGenAcc->SetMinimum(0);
     fOutput->Add(fPtVsYGenAcc);
     
-    fPtVsYReco= new TH2F("hPtVsYReco","",nPtBins,0.,fMaxPt,20,-1.,1.);
+    fPtVsYReco= new TH2F("hPtVsYReco","",nPtBins,0.,maxPt,20,-1.,1.);
     fPtVsYReco->Sumw2();
     fPtVsYReco->SetMinimum(0);
     fOutput->Add(fPtVsYReco);
@@ -293,38 +296,38 @@ void AliAnalysisTaskCombinHF::UserCreateOutputObjects()
   
   Int_t nMassBins=fMaxMass*1000.-fMinMass*1000.;
   Double_t maxm=fMinMass+nMassBins*0.001;
-  fMassVsPtVsY=new TH3F("hMassVsPtVsY","",nMassBins,fMinMass,maxm,nPtBins,0.,fMaxPt,20,-1.,1.);
+  fMassVsPtVsY=new TH3F("hMassVsPtVsY","",nMassBins,fMinMass,maxm,nPtBins,0.,maxPt,20,-1.,1.);
   fMassVsPtVsY->Sumw2();
   fMassVsPtVsY->SetMinimum(0);
   fOutput->Add(fMassVsPtVsY);
   
-  fMassVsPtVsYRot=new TH3F("hMassVsPtVsYRot","",nMassBins,fMinMass,maxm,nPtBins,0.,fMaxPt,20,-1.,1.);
+  fMassVsPtVsYRot=new TH3F("hMassVsPtVsYRot","",nMassBins,fMinMass,maxm,nPtBins,0.,maxPt,20,-1.,1.);
   fMassVsPtVsYRot->Sumw2();
   fMassVsPtVsYRot->SetMinimum(0);
   fOutput->Add(fMassVsPtVsYRot);
   
   if(fMeson==kDzero){
-    fMassVsPtVsYLSpp=new TH3F("hMassVsPtVsYLSpp","",nMassBins,fMinMass,maxm,nPtBins,0.,fMaxPt,20,-1.,1.);
+    fMassVsPtVsYLSpp=new TH3F("hMassVsPtVsYLSpp","",nMassBins,fMinMass,maxm,nPtBins,0.,maxPt,20,-1.,1.);
     fMassVsPtVsYLSpp->Sumw2();
     fMassVsPtVsYLSpp->SetMinimum(0);
     fOutput->Add(fMassVsPtVsYLSpp);
-    fMassVsPtVsYLSmm=new TH3F("hMassVsPtVsYLSmm","",nMassBins,fMinMass,maxm,nPtBins,0.,fMaxPt,20,-1.,1.);
+    fMassVsPtVsYLSmm=new TH3F("hMassVsPtVsYLSmm","",nMassBins,fMinMass,maxm,nPtBins,0.,maxPt,20,-1.,1.);
     fMassVsPtVsYLSmm->Sumw2();
     fMassVsPtVsYLSmm->SetMinimum(0);
     fOutput->Add(fMassVsPtVsYLSmm);
   }
   
-  fMassVsPtVsYSig=new TH3F("hMassVsPtVsYSig","",nMassBins,fMinMass,maxm,nPtBins,0.,fMaxPt,20,-1.,1.);
+  fMassVsPtVsYSig=new TH3F("hMassVsPtVsYSig","",nMassBins,fMinMass,maxm,nPtBins,0.,maxPt,20,-1.,1.);
   fMassVsPtVsYSig->Sumw2();
   fMassVsPtVsYSig->SetMinimum(0);
   fOutput->Add(fMassVsPtVsYSig);
   
-  fMassVsPtVsYRefl=new TH3F("hMassVsPtVsYRefl","",nMassBins,fMinMass,maxm,nPtBins,0.,fMaxPt,20,-1.,1.);
+  fMassVsPtVsYRefl=new TH3F("hMassVsPtVsYRefl","",nMassBins,fMinMass,maxm,nPtBins,0.,maxPt,20,-1.,1.);
   fMassVsPtVsYRefl->Sumw2();
   fMassVsPtVsYRefl->SetMinimum(0);
   fOutput->Add(fMassVsPtVsYRefl);
   
-  fMassVsPtVsYBkg=new TH3F("hMassVsPtVsYBkg","",nMassBins,fMinMass,maxm,nPtBins,0.,fMaxPt,20,-1.,1.);
+  fMassVsPtVsYBkg=new TH3F("hMassVsPtVsYBkg","",nMassBins,fMinMass,maxm,nPtBins,0.,maxPt,20,-1.,1.);
   fMassVsPtVsYBkg->Sumw2();
   fMassVsPtVsYBkg->SetMinimum(0);
   fOutput->Add(fMassVsPtVsYBkg);
index e9b0d0682c9f3e93c4a384abd017dc57f1db18e3..192af438b632e703c7d3fe0aefca9603163fc927 100644 (file)
@@ -69,6 +69,7 @@ public:
   }
   void SetMassWindow(Double_t minMass, Double_t maxMass){fMinMass=minMass; fMaxMass=maxMass;}
   void SetMaxPt(Double_t maxPt){fMaxPt=maxPt;}
+  void SetPtBinWidth(Double_t binw){fPtBinWidth=binw;}
   void SetEtaAccCut(Double_t etacut){fEtaAccCut=etacut;}
   void SetPtAccCut(Double_t ptcut){fPtAccCut=ptcut;}
   
@@ -134,6 +135,7 @@ private:
   Double_t fMinMass; // minimum value of invariant mass
   Double_t fMaxMass; // maximum value of invariant mass
   Double_t fMaxPt;   // maximum pT value for inv. mass histograms
+  Double_t fPtBinWidth; // width of pt bin (GeV/c)
   Double_t fEtaAccCut; // eta limits for acceptance step
   Double_t fPtAccCut; // pt limits for acceptance step
   
@@ -159,7 +161,7 @@ private:
   Double_t fBayesThresKaon;  // threshold for kaon identification via Bayesian PID
   Double_t fBayesThresPion;  // threshold for pion identification via Bayesian PID
   
-  ClassDef(AliAnalysisTaskCombinHF,4); // D0D+ task from AOD tracks
+  ClassDef(AliAnalysisTaskCombinHF,5); // D0D+ task from AOD tracks
 };
 
 #endif
index 9cec59e23ac6f39bed7f68b5c81b0403e8994b00..36346570180b9605cc3a73dded27423bd2c417df 100644 (file)
@@ -12,17 +12,18 @@ AliAnalysisTaskCombinHF *AddTaskCombinHF(Int_t meson = 0,
                                          Double_t bayesThresPion = 0.4,
                                          Double_t minMass = 1.6,
                                          Double_t maxMass = 2.15,
-                                         Double_t maxPt = 20.)
+                                         Double_t maxPt = 20.,
+                                         Double_t ptBinWidth = 0.5)
 {
-
+  
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
   if (!mgr) {
     ::Error("AddTaskCombinHF", "No analysis manager to connect to.");
   }
-
+  
   //Analysis Task
-
-
+  
+  
   AliRDHFCuts* analysiscuts=0x0;
   AliAODPidHF* pid=0x0;
   if(!cutObjFile.IsNull()){
@@ -45,13 +46,13 @@ AliAnalysisTaskCombinHF *AddTaskCombinHF(Int_t meson = 0,
     pid->SetTOFnSigmaRangeForPions(-3.,3.);
     pid->SetTOFnSigmaRangeForKaons(-2.,2.);
     pid->SetTOFnSigmaRangeForProtons(-3.,3.);
-
+    
   }
   if(!analysiscuts){
     Printf("Wrong file or cut object name set");
     return 0x0;
   }
-
+  
   AliAnalysisTaskCombinHF *dTask = new AliAnalysisTaskCombinHF(meson,analysiscuts);
   if(!cutObjFile.IsNull()){
     dTask->SetKaonTrackCuts(esdc);
@@ -68,43 +69,44 @@ AliAnalysisTaskCombinHF *AddTaskCombinHF(Int_t meson = 0,
   // mass and pt range for histograms
   dTask->SetMassWindow(minMass, maxMass);
   dTask->SetMaxPt(maxPt);
+  dTask->SetPtBinWidth(ptBinWidth);
   
   // PID settings
   dTask->SetPIDHF(pid);
   dTask->SetPIDstrategy(pidStrategy);
   dTask->SetPIDselCaseZero(casePID);
   dTask->SetBayesThres(bayesThresKaon, bayesThresPion);
-
+  
+  
   mgr->AddTask(dTask);
-
   
-  // Create containers for input/output 
-
+  
+  // Create containers for input/output
+  
   TString mesname="Dzero";
   if(meson==1) mesname="Dplus";
   TString inname = Form("cinput%s%s",mesname.Data(),containerStr.Data());
   TString outname = Form("coutput%s%s",mesname.Data(),containerStr.Data());
   TString normname = Form("coutput%sNorm%s",mesname.Data(),containerStr.Data());
-
+  
   AliAnalysisDataContainer *cinput = mgr->CreateContainer(inname,TChain::Class(),
-                                                         AliAnalysisManager::kInputContainer);
+                                                          AliAnalysisManager::kInputContainer);
   TString outputfile = AliAnalysisManager::GetCommonFileName();
   outputfile += Form(":PWG3_D2H_InvMass%sLowPt%s",mesname.Data(),containerStr.Data());
   
   
   AliAnalysisDataContainer *coutput = mgr->CreateContainer(outname,TList::Class(),
-                                                               AliAnalysisManager::kOutputContainer,
-                                                               outputfile.Data());
+                                                           AliAnalysisManager::kOutputContainer,
+                                                           outputfile.Data());
   AliAnalysisDataContainer *coutputNorm = mgr->CreateContainer(normname,AliNormalizationCounter::Class(),
-                                                               AliAnalysisManager::kOutputContainer,
-                                                               outputfile.Data());
+                                                               AliAnalysisManager::kOutputContainer,
+                                                               outputfile.Data());
   
   mgr->ConnectInput(dTask,0,mgr->GetCommonInputContainer());
   
   mgr->ConnectOutput(dTask,1,coutput);
   
   mgr->ConnectOutput(dTask,2,coutputNorm);  
-
+  
   return dTask;
 }