]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/SPECTRA/ChargedHadrons/dNdPt/macros/AddTask_dNdPtpPb_test.C
- added AddTask for PbPb2011
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / ChargedHadrons / dNdPt / macros / AddTask_dNdPtpPb_test.C
1 void AddTask_dNdPtpPb_test()
2 {
3   
4   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
5   
6   if (!mgr) {
7     Error("AddTask_dNdPtpPb_test", "No analysis manager found.");
8     return 0;
9   }
10   
11   
12   Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
13   
14   
15   // Switch off all AliInfo (too much output!!!)
16   AliLog::SetGlobalLogLevel(AliLog::kError);
17   mgr->SetDebugLevel(0);
18   
19   //
20   // Create physics trigger selection class
21   //
22   
23   
24   // AliPhysicsSelection *physTrigSel =  new AliPhysicsSelection();
25   
26   //
27   // Create event cuts
28   //
29   Float_t zvWindow = 30. ;
30   
31   AlidNdPtEventCuts *evtCuts = new AlidNdPtEventCuts("AlidNdPtEventCuts","Event cuts");
32   evtCuts->SetZvRange(-zvWindow,zvWindow);
33   evtCuts->SetMeanXYZv(0.0,0.0,0.0);
34   evtCuts->SetSigmaMeanXYZv(1.0,1.0,10.0);
35   evtCuts->SetTriggerRequired(kTRUE);
36   
37   //
38   // Create geom. acceptance cuts
39   //
40   Float_t etaWindow = 1. ;
41   Float_t ptMin = 0.10 ;
42   
43   AlidNdPtAcceptanceCuts *accCuts = new AlidNdPtAcceptanceCuts("AlidNdPtAcceptanceCuts","Geom. acceptance cuts");
44   accCuts->SetEtaRange(-etaWindow,etaWindow);
45   accCuts->SetPtRange(ptMin,1.e10);
46   
47   // cut out trouble sector(s)
48   Float_t phiMin = TMath::Pi() / 9. * 6.;
49   Float_t phiMax = TMath::Pi() / 9. * 7.;
50   // additional cut to remove one sector
51   AlidNdPtAcceptanceCuts *recCuts = new AlidNdPtAcceptanceCuts("AlidNdPtRecAcceptanceCuts","Geom. acceptance cuts for Recostructed tracks");  
52   recCuts->SetExcludeEtaPhiRange(-1.,0.,phiMin,phiMax);
53   
54   
55   //
56   // Create standard esd track cuts
57   //
58   //   Int_t cutMode = 200;
59   
60   //gROOT->LoadMacro("$ALICE_ROOT/PWGLF/SPECTRA/ChargedHadrons/dNdPt/macros/CreatedNdPtTrackCuts.C");  
61   //   gROOT->LoadMacro("$ALICE_ROOT/PWGLF/SPECTRA/ChargedHadrons/dNdPt/macros/CreatedNdPtTrackCuts.C");
62   //   AliESDtrackCuts* esdTrackCuts = CreatedNdPtTrackCuts(cutMode);
63   //   if (!esdTrackCuts) {
64  //     printf("ERROR: esdTrackCuts could not be created\n");
65  //     return;
66  //   } else {
67    //esdTrackCuts->SetHistogramsOn(kTRUE);
68    //     esdTrackCuts->SetHistogramsOn(kTRUE);
69    //   }
70    //   esdTrackCuts->SetMaxChi2TPCConstrainedGlobal(36.);
71    //   esdTrackCuts->SetMaxChi2PerClusterITS(36.);
72    //   esdTrackCuts->SetMaxDCAToVertexXY(3.0); // is in Michaels cutmode 2222
73    
74    Float_t minNCrossedRowsTPC = 120;
75    Float_t minRatioCrossedRowsOverFindableClustersTPC = 0.8;
76    Float_t maxFractionSharedTPCCluster = 0.4;
77    Double_t maxchi2perTPCcl=4.;
78    Double_t maxdcazITSTPC=2.0;
79    Double_t maxdaczTPC=3.0;
80    Double_t maxdcaxyTPC=3.0;
81    
82    AliESDtrackCuts* esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts");
83    esdTrackCuts->SetRequireTPCRefit(kTRUE);
84    esdTrackCuts->SetMinNCrossedRowsTPC(minNCrossedRowsTPC);
85    esdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(minRatioCrossedRowsOverFindableClustersTPC);
86    esdTrackCuts->SetMaxChi2PerClusterTPC(maxchi2perTPCcl);
87    esdTrackCuts->SetMaxFractionSharedTPCClusters(maxFractionSharedTPCCluster);
88    esdTrackCuts->SetMaxDCAToVertexZ(maxdaczTPC);
89    esdTrackCuts->SetMaxDCAToVertexXY(maxdcaxyTPC);
90    esdTrackCuts->SetRequireITSRefit(kTRUE);
91    esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
92    esdTrackCuts->SetMaxChi2PerClusterITS(36.);
93    esdTrackCuts->SetDCAToVertex2D(kFALSE);
94    esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
95    esdTrackCuts->SetMaxDCAToVertexZ(maxdcazITSTPC);
96    esdTrackCuts->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01");
97    esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
98    esdTrackCuts->SetMaxChi2TPCConstrainedGlobal(36.);
99    esdTrackCuts->SetHistogramsOn(kTRUE);
100    
101    //
102    // Create task
103    //
104    AlidNdPtTask *task = new AlidNdPtTask("AlidNdPtTask");
105    task->SetUseMCInfo(hasMC);
106    
107    // trigger selection: MB
108    task->SelectCollisionCandidates(AliVEvent::kCINT5); 
109    
110    //
111    // set analysis options from the Helper here
112    //
113    AlidNdPtHelper::OutputObject outputObject = AlidNdPtHelper::kAnalysisPbPb;
114    AlidNdPtHelper::AnalysisMode analysisMode = AlidNdPtHelper::kTPCITS ;
115    AlidNdPtHelper::ParticleMode particleMode = AlidNdPtHelper::kAllPart ;
116    
117    
118    //
119    // Create cut analysis object
120    //
121    if(outputObject==AlidNdPtHelper::kAnalysisPbPb){
122      
123      //gROOT->LoadMacro("dNdPtPbPb/AlidNdPtAnalysisPbPb.cxx+");
124      AlidNdPtAnalysisPbPb2011 *fdNdPtAnalysisPbPb = new AlidNdPtAnalysisPbPb2011("dNdPtAnalysispPb2011","dN/dPt Analysis");
125      fdNdPtAnalysisPbPb->SetEventCuts(evtCuts);
126      fdNdPtAnalysisPbPb->SetAcceptanceCuts(accCuts);
127      fdNdPtAnalysisPbPb->SetTrackCuts(esdTrackCuts);
128      fdNdPtAnalysisPbPb->SetAnalysisMode(analysisMode);
129      fdNdPtAnalysisPbPb->SetParticleMode(particleMode); 
130      //      fdNdPtAnalysisPbPb->SetCentralityEstimator("ZNA");
131      fdNdPtAnalysisPbPb->SetCentralityEstimator("V0M");
132      fdNdPtAnalysisPbPb->SetTriggerMask(AliVEvent::kCINT5);
133      //fdNdPtAnalysisPbPb->SetTriggerMask(AliVEvent::kEMC1);
134      
135      // cut to remove tpc sector
136      //fdNdPtAnalysisPbPb->SetRecAcceptanceCuts(recCuts);
137      
138      // change binning
139      // change binning
140 //      Double_t centralitybins[12] = {0., 5., 10., 20., 30., 40., 50., 60., 70., 80., 90., 100.};
141      Double_t centralitybins[6] = {0., 20., 40., 60., 80., 100.};  
142      
143      Double_t ptbins[85] = {0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 18.0, 20.0, 22.0, 24.0, 26.0, 28.0, 30.0, 32.0, 34.0, 36.0, 40.0, 45.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 110.0, 120.0, 130.0, 140.0, 150.0, 160.0, 180.0, 200.0, 300.0, 400.0, 500.0};
144      Double_t ptcorrbins[85] = {0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 18.0, 20.0, 22.0, 24.0, 26.0, 28.0, 30.0, 32.0, 34.0, 36.0, 40.0, 45.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 110.0, 120.0, 130.0, 140.0, 150.0, 160.0, 180.0, 200.0, 300.0, 400.0, 500.0};
145      Double_t multbins[48] = {-0.5, 0.5 , 1.5 , 2.5 , 3.5 , 4.5 , 5.5 , 6.5 , 7.5 , 8.5,9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5,19.5, 20.5, 30.5, 40.5 , 50.5 , 60.5 , 70.5 , 80.5 , 90.5 , 100.5,200.5, 300.5, 400.5, 500.5, 600.5, 700.5, 800.5, 900.5, 1000.5, 2000.5, 3000.5, 4000.5, 5000.5, 6000.5, 7000.5, 8000.5, 9000.5, 10000.5 };
146      Double_t etabins[31] = {-1.465409,-1.365409,-1.265409,-1.165409,-1.065409,-0.965409,-0.865409,-0.765409,-0.665409,-0.565409,-0.465409,-0.365409,-0.265409,-0.165409,-0.065409,0.034591,0.134591,0.234591,0.334591,0.434591,0.534591,0.634591,0.734591,0.834591,0.934591,1.034591,1.134591,1.234591,1.334591,1.434591,1.534591};
147      Double_t zvbins[13] = {-30.,-25.,-20.,-15.,-10.,-5.,0.,5.,10.,15.,20.,25.,30.};
148      
149      
150      //Double_t* binsPt = new Double_t[85];
151      //for (int i=0; i<85; i++) {binsPt[i] = ptbins[i];}
152      
153      //fdNdPtAnalysisPbPb->SetBinsPt(85, ptbins);
154      //fdNdPtAnalysisPbPb->SetBinsPtCorr(85, ptbins);  
155      //fdNdPtAnalysisPbPb->SetBinsCentrality(4, centralitybins);
156      
157      if(ptbins)
158      {
159        Int_t nptbins = sizeof(ptbins) / sizeof(Double_t);
160        Printf("Setting %i ptbins", nptbins);
161        fdNdPtAnalysisPbPb->SetBinsPt(nptbins, ptbins);
162      }
163      
164      if(ptbins)
165      {
166        Int_t nptcorrbins = sizeof(ptcorrbins) / sizeof(Double_t);
167        Printf("Setting %i ptcorrbins", nptcorrbins);
168        fdNdPtAnalysisPbPb->SetBinsPtCorr(nptcorrbins, ptcorrbins);
169      }
170      
171      if(centralitybins)
172      {
173        Int_t ncentralitybins = sizeof(centralitybins) / sizeof(Double_t);
174        Printf("Setting %i centralitybins", ncentralitybins);
175        fdNdPtAnalysisPbPb->SetBinsCentrality(ncentralitybins, centralitybins);
176      }
177      
178      if(etabins)
179      {
180        Int_t netabins = sizeof(etabins) / sizeof(Double_t);
181        Printf("Setting %i etabins", netabins);
182        fdNdPtAnalysisPbPb->SetBinsEta(netabins, etabins);
183      }
184      
185      if(hasMC) 
186      {
187        
188        fdNdPtAnalysisPbPb->SetUseMCInfo(kTRUE);
189        fdNdPtAnalysisPbPb->SetHistogramsOn(kTRUE);
190      }
191      else 
192      { 
193        // online trigger
194        // fdNdPtAnalysisPbPb->SetPhysicsTriggerSelection(physTrigSel); 
195      }
196      
197      
198      task->AddAnalysisObject( fdNdPtAnalysisPbPb );
199    }
200    
201    // Add task
202    mgr->AddTask(task);
203    
204    // Create containers for input
205    AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
206    
207    TString outputFileName = AliAnalysisManager::GetCommonFileName();
208    
209    AliAnalysisDataContainer *coutput  = mgr->CreateContainer("dNdPtpPb", 
210                                                              TList::Class(),
211                                                              AliAnalysisManager::kOutputContainer,      
212                                                              Form("%s:dNdPtHistos", mgr->GetCommonFileName()));
213                                                              
214                                                              mgr->ConnectInput(task, 0, cinput);
215                                                              mgr->ConnectOutput(task, 1, coutput);
216                                                              
217                                                              
218 }
219