removed duplications in AlidNdPtHelper and AliPWG0Helper and small changes
[u/mrichter/AliRoot.git] / PWG0 / dNdPt / macros / rundNdPt.C
1 void rundNdPt(const char *fileList ="inputList.txt",const char *outFile = "outputFile.root", Int_t NumberOfFiles=10,Int_t fromFile=0, Int_t nEvents=1000, Int_t firstEvent =0, Bool_t bUseMCInfo=kTRUE, Float_t zvWindow=20., Int_t cutMode=9,Float_t etaWindow=0.9, Float_t ptMin=0.15,AlidNdPtHelper::AnalysisMode analysisMode = AlidNdPtHelper::kTPC, AlidNdPtHelper::OutputObject outputObject=AlidNdPtHelper::kCorrection,const char *corrFile = "corrMatricesFile.root",Bool_t bProof=kFALSE)
2 {
3   // set Proof
4   if(bProof) { 
5     
6     //cout << "*** START PROOF Lite SESSION ***" << endl;
7     //TProof::Open(""); // 1. Enter your username here
8     
9     TProofMgr * proofmgr = TProof::Mgr("lxialpod2.gsi.de:21001");
10     //TProofMgr * proofmgr = TProof::Mgr("lxial39.gsi.de:21001");
11     TProof * proof = proofmgr->CreateSession();
12     proof->SetParameter("PROOF_MaxSlavesPerNode", (Long_t)1000);
13
14     // -- Load AliRoot Libraries
15     gROOT->LoadMacro("ProofEnableAliRootGSI.C");
16     ProofEnableAliRootGSI("/u/jacek/alice/AliRoot/trunk");
17   }
18
19   // Swtich off all AliInfo (too much output!!!)
20   AliLog::SetGlobalLogLevel(AliLog::kError);
21
22   // Create analysis manager
23   AliAnalysisManager *mgr = new AliAnalysisManager;
24
25   //
26   // Create event cuts
27   //
28   AlidNdPtEventCuts *evtCuts = new AlidNdPtEventCuts("AlidNdPtEventCuts","Event cuts");
29   evtCuts->SetZvRange(-zvWindow,zvWindow);
30   evtCuts->SetMeanXYZv(0.0,0.0,0.0);
31   evtCuts->SetSigmaMeanXYZv(1.0,1.0,10.0);
32   evtCuts->SetTriggerRequired(kTRUE);
33
34   // Create geom. acceptance cuts
35   AlidNdPtAcceptanceCuts *accCuts = new AlidNdPtAcceptanceCuts("AlidNdPtAcceptanceCuts","Geom. acceptance cuts");
36   accCuts->SetEtaRange(-etaWindow,etaWindow);
37   accCuts->SetPtRange(ptMin,1.e10);
38   accCuts->SetMaxDCAr(3.0);
39   accCuts->SetMaxDCAz(30.0);
40
41   // Create standard esd track cuts
42   gROOT->LoadMacro("CreatedNdPtTrackCuts.C");
43   AliESDtrackCuts* esdTrackCuts = CreatedNdPtTrackCuts(cutMode);
44   if (!esdTrackCuts) {
45     printf("ERROR: esdTrackCuts could not be created\n");
46     return;
47   } else {
48     esdTrackCuts->SetHistogramsOn(kTRUE);
49   }
50
51   //
52   // Create task
53   //
54   AlidNdPtTask *task = new AlidNdPtTask("AlidNdPtTask");
55   if (bUseMCInfo) task->SetUseMCInfo(kTRUE);
56
57   // create cut analysis object
58   if(outputObject==AlidNdPtHelper::kCutAnalysis) 
59   {
60     AlidNdPtCutAnalysis *fdNdPtCutAnalysis = new AlidNdPtCutAnalysis("dNdPtCutAnalysis","dN/dPt Cut Analysis");
61     fdNdPtCutAnalysis->SetEventCuts(evtCuts);
62     fdNdPtCutAnalysis->SetAcceptanceCuts(accCuts);
63     fdNdPtCutAnalysis->SetTrackCuts(esdTrackCuts);
64     fdNdPtCutAnalysis->SetAnalysisMode(analysisMode); 
65     fdNdPtCutAnalysis->SetTrigger(AliPWG0Helper::kMB1); 
66     if (bUseMCInfo) fdNdPtCutAnalysis->SetUseMCInfo(kTRUE);
67
68     task->AddAnalysisObject( fdNdPtCutAnalysis );
69   }
70
71   // create analysis object
72   if(outputObject==AlidNdPtHelper::kAnalysis) 
73   {
74     AlidNdPtAnalysis *fdNdPtAnalysis = new AlidNdPtAnalysis("dNdPtAnalysis","dN/dPt Analysis");
75     fdNdPtAnalysis->SetEventCuts(evtCuts);
76     fdNdPtAnalysis->SetAcceptanceCuts(accCuts);
77     fdNdPtAnalysis->SetTrackCuts(esdTrackCuts);
78     fdNdPtAnalysis->SetAnalysisMode(analysisMode); 
79     fdNdPtAnalysis->SetTrigger(AliPWG0Helper::kMB1); 
80     if (bUseMCInfo) fdNdPtAnalysis->SetUseMCInfo(kTRUE);
81
82     fdNdPtAnalysis->SetHistogramsOn(kTRUE);
83     //fdNdPtAnalysis->SetHistogramsOn(kFALSE);
84     task->AddAnalysisObject( fdNdPtAnalysis );
85   }
86
87   // create correction object
88   if(outputObject == AlidNdPtHelper::kCorrection) 
89   {
90     AlidNdPtCorrection *fdNdPtCorrection = new AlidNdPtCorrection("dNdPtCorrection","dN/dPt Correction", corrFile);
91
92     fdNdPtCorrection->SetEventCuts(evtCuts);
93     fdNdPtCorrection->SetAcceptanceCuts(accCuts);
94     fdNdPtCorrection->SetTrackCuts(esdTrackCuts);
95     fdNdPtCorrection->SetAnalysisMode(analysisMode); 
96     fdNdPtCorrection->SetTrigger(AliPWG0Helper::kMB1); 
97     if (bUseMCInfo) fdNdPtCorrection->SetUseMCInfo(kTRUE);
98
99     task->AddAnalysisObject( fdNdPtCorrection );
100   }
101
102   // Add task
103   mgr->AddTask(task);
104
105   // Add ESD handler
106   AliESDInputHandler* esdH = new AliESDInputHandler;
107   //esdH->SetInactiveBranches("*");
108   mgr->SetInputEventHandler(esdH);
109
110   if(bUseMCInfo) {
111   // Enable MC event handler
112     AliMCEventHandler* handler = new AliMCEventHandler;
113     handler->SetReadTR(kFALSE);
114     //handler->SetReadTR(kTRUE);
115     mgr->SetMCtruthEventHandler(handler);
116   }
117
118   // Create input chain
119   gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C");
120   TChain* chain = CreateESDChain(fileList, NumberOfFiles, fromFile);
121   if(!chain) {
122     printf("ERROR: chain cannot be created\n");
123     return;
124   }
125
126   // Create containers for input
127   AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
128   mgr->ConnectInput(task, 0, cinput);
129
130   // Create containers for output
131   AliAnalysisDataContainer *coutput = mgr->CreateContainer("coutput", TList::Class(), AliAnalysisManager::kOutputContainer, outFile);
132   mgr->ConnectOutput(task, 0, coutput);
133
134   // Enable debug printouts
135   mgr->SetDebugLevel(0);
136
137   if (!mgr->InitAnalysis())
138     return;
139
140   mgr->PrintStatus();
141
142   if(bProof) mgr->StartAnalysis("proof",chain, nEvents, firstEvent);
143   else mgr->StartAnalysis("local",chain,nEvents, firstEvent);
144 }
145