Separate libraries for MUONdep and MUONlite
[u/mrichter/AliRoot.git] / PWGUD / dNdPt / macros / AddTask_mkoehler_dNdPtPbPb.C
1
2 void AddTask_mkoehler_dNdPtPbPb()
3 {
4
5         CheckLoadLibrary("libPWG0base");
6         CheckLoadLibrary("libPWG0dep");
7         CheckLoadLibrary("libPWG0selectors");
8
9  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
10
11   if (!mgr) {
12     Error("AddTask_mkoehler_dNdPtPbPb", "No analysis manager found.");
13     return 0;
14   }
15
16
17   Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
18 //  Bool_t hasMC= kFALSE;
19
20
21   // Switch off all AliInfo (too much output!!!)
22   AliLog::SetGlobalLogLevel(AliLog::kError);
23   mgr->SetDebugLevel(0);
24
25   //
26   // Create physics trigger selection class
27   //
28
29
30 AliPhysicsSelection *physTrigSel =  new AliPhysicsSelection();
31
32   //
33   // Create event cuts
34   //
35   Float_t zvWindow = 20. ;
36
37   AlidNdPtEventCuts *evtCuts = new AlidNdPtEventCuts("AlidNdPtEventCuts","Event cuts");
38   evtCuts->SetZvRange(-zvWindow,zvWindow);
39   evtCuts->SetMeanXYZv(0.0,0.0,0.0);
40   evtCuts->SetSigmaMeanXYZv(1.0,1.0,10.0);
41   evtCuts->SetTriggerRequired(kTRUE);
42
43   //
44   // Create geom. acceptance cuts
45   //
46   Float_t etaWindow = 1. ;
47   Float_t ptMin = 0.15 ;
48
49   AlidNdPtAcceptanceCuts *accCuts = new AlidNdPtAcceptanceCuts("AlidNdPtAcceptanceCuts","Geom. acceptance cuts");
50   accCuts->SetEtaRange(-etaWindow,etaWindow);
51   accCuts->SetPtRange(ptMin,1.e10);
52   accCuts->SetMaxDCAr(3.0);
53   accCuts->SetMaxDCAz(30.0);
54
55   //
56   // Create standard esd track cuts
57   //
58   Int_t cutMode = 23;
59
60   gROOT->LoadMacro("$ALICE_ROOT/PWG0/dNdPt/macros/CreatedNdPtTrackCuts.C");
61   AliESDtrackCuts* esdTrackCuts = CreatedNdPtTrackCuts(cutMode);
62   if (!esdTrackCuts) {
63     printf("ERROR: esdTrackCuts could not be created\n");
64     return;
65   } else {
66     esdTrackCuts->SetHistogramsOn(kTRUE);
67   }
68
69   //
70   // Create task
71   //
72   AlidNdPtTask *task = new AlidNdPtTask("AlidNdPtTask");
73   task->SetUseMCInfo(hasMC);
74
75   //TString datatype=gSystem->Getenv("CONFIG_FILE");
76   //if ( datatype == "PbPb" ){
77   //  task->SelectCollisionCandidates(AliVEvent::kUserDefined);
78   //}
79   //else
80   task->SelectCollisionCandidates(AliVEvent::kMB); 
81
82
83 //     }
84 //     else
85 //       task->SelectCollisionCandidates(); 
86
87  //
88  // set analysis options from the Helper here
89  //
90  AlidNdPtHelper::OutputObject outputObject = AlidNdPtHelper::kAnalysisPbPb;
91  AlidNdPtHelper::AnalysisMode analysisMode = AlidNdPtHelper::kTPC ;
92  AlidNdPtHelper::ParticleMode particleMode = AlidNdPtHelper::kAllPart ;
93
94
95   //
96   // Create cut analysis object
97   //
98   if(outputObject==AlidNdPtHelper::kAnalysisPbPb){
99
100     AlidNdPtAnalysisPbPb *fdNdPtAnalysisPbPb = new AlidNdPtAnalysisPbPb("dNdPtAnalysisPbPb","dN/dPt Analysis");
101     fdNdPtAnalysisPbPb->SetEventCuts(evtCuts);
102     fdNdPtAnalysisPbPb->SetAcceptanceCuts(accCuts);
103     fdNdPtAnalysisPbPb->SetTrackCuts(esdTrackCuts);
104     fdNdPtAnalysisPbPb->SetAnalysisMode(analysisMode); 
105     fdNdPtAnalysisPbPb->SetParticleMode(particleMode); 
106
107
108     if(hasMC) 
109     {
110        physTrigSel->SetAnalyzeMC();
111        fdNdPtAnalysisPbPb->SetPhysicsTriggerSelection(physTrigSel);
112
113        fdNdPtAnalysisPbPb->SetUseMCInfo(kTRUE);
114        fdNdPtAnalysisPbPb->SetHistogramsOn(kTRUE);
115        //fdNdPtAnalysisPbPb->SetHistogramsOn(kFALSE);
116     }else { // online trigger
117     fdNdPtAnalysisPbPb->SetPhysicsTriggerSelection(physTrigSel); 
118     }
119
120     task->AddAnalysisObject( fdNdPtAnalysisPbPb );
121   }
122   
123   // Centrality
124   task->SetUseCentrality(1);     // 0=off, 1=VZERO, 2=SPD
125   task->SetUseCentralityBin(0);  // Bin to be used 0,5,10,20,30,40,50,60,70,80,90,(100=SPDonly)
126                                  // 0 = most centrality  
127
128
129   // Centrality
130           task->SetUseCentrality(1);     // 0=off, 1=VZERO, 2=SPD
131           task->SetUseCentralityBin(0);  // Bin to be used 0,5,10,20,30,40,50,60,70,80,90,(100=SPDonly)
132                                          // 0 = most centrality
133
134  // Add task
135   mgr->AddTask(task);
136
137   // Create containers for input
138   AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
139   mgr->ConnectInput(task, 0, cinput);
140
141   AliAnalysisDataContainer *coutput = mgr->CreateContainer("mkoehler_dNdPtPbPb", TList::Class(), AliAnalysisManager::kOutputContainer, "mkoehler_dNdPtPbPb.root");
142   mgr->ConnectOutput(task, 1, coutput);
143
144
145
146 }
147