0e81c59a04d1c0cc6effc615819beda5926d7bb0
[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     TProof * proof = proofmgr->CreateSession();
11     proof->SetParameter("PROOF_MaxSlavesPerNode", (Long_t)1000);
12
13     // -- Load AliRoot Libraries
14     gROOT->LoadMacro("ProofEnableAliRootGSI.C");
15     ProofEnableAliRoot("/u/jacek/alice/AliRoot/trunk");
16   }
17
18   // Swtich off all AliInfo (too much output!!!)
19   AliLog::SetGlobalLogLevel(AliLog::kError);
20
21   // Create analysis manager
22   AliAnalysisManager *mgr = new AliAnalysisManager;
23
24   //
25   // Create event cuts
26   //
27   AlidNdPtEventCuts *evtCuts = new AlidNdPtEventCuts("AlidNdPtEventCuts","Event cuts");
28   evtCuts->SetZvRange(-zvWindow,zvWindow);
29   evtCuts->SetMeanXYZv(0.0,0.0,0.0);
30   evtCuts->SetSigmaMeanXYZv(1.0,1.0,10.0);
31   //evtCuts->SetTriggerRequired(kFALSE);
32
33   // Create geom. acceptance cuts
34   AlidNdPtAcceptanceCuts *accCuts = new AlidNdPtAcceptanceCuts("AlidNdPtAcceptanceCuts","Geom. acceptance cuts");
35   accCuts->SetEtaRange(-etaWindow,etaWindow);
36   accCuts->SetPtRange(ptMin,1.e10);
37   accCuts->SetMaxDCAr(3.0);
38   accCuts->SetMaxDCAz(30.0);
39
40   // Create standard esd track cuts
41   gROOT->LoadMacro("CreatedNdPtTrackCuts.C");
42   AliESDtrackCuts* esdTrackCuts = CreateTrackCuts(cutMode);
43   if (!esdTrackCuts) {
44     printf("ERROR: esdTrackCuts could not be created\n");
45     return;
46   } else {
47     esdTrackCuts->SetHistogramsOn(kTRUE);
48   }
49
50   //
51   // Create task
52   //
53   AlidNdPtTask *task = new AlidNdPtTask("AlidNdPtTask");
54   if (bUseMCInfo) task->SetUseMCInfo(kTRUE);
55
56   // create cut analysis object
57   if(outputObject==AlidNdPtHelper::kCutAnalysis) 
58   {
59     AlidNdPtCutAnalysis *fdNdPtCutAnalysis = new AlidNdPtCutAnalysis("dNdPtCutAnalysis","dN/dPt Cut Analysis");
60     fdNdPtCutAnalysis->SetEventCuts(evtCuts);
61     fdNdPtCutAnalysis->SetAcceptanceCuts(accCuts);
62     fdNdPtCutAnalysis->SetTrackCuts(esdTrackCuts);
63     fdNdPtCutAnalysis->SetAnalysisMode(analysisMode); 
64     fdNdPtCutAnalysis->SetTrigger(AlidNdPtHelper::kMB1); 
65     if (bUseMCInfo) fdNdPtCutAnalysis->SetUseMCInfo(kTRUE);
66
67     task->AddAnalysisObject( fdNdPtCutAnalysis );
68   }
69
70   // create analysis object
71   if(outputObject==AlidNdPtHelper::kAnalysis) 
72   {
73     AlidNdPtAnalysis *fdNdPtAnalysis = new AlidNdPtAnalysis("dNdPtAnalysis","dN/dPt Analysis");
74     fdNdPtAnalysis->SetEventCuts(evtCuts);
75     fdNdPtAnalysis->SetAcceptanceCuts(accCuts);
76     fdNdPtAnalysis->SetTrackCuts(esdTrackCuts);
77     fdNdPtAnalysis->SetAnalysisMode(analysisMode); 
78     fdNdPtAnalysis->SetTrigger(AlidNdPtHelper::kMB1); 
79     if (bUseMCInfo) fdNdPtAnalysis->SetUseMCInfo(kTRUE);
80
81     fdNdPtAnalysis->SetHistogramsOn(kTRUE);
82     //fdNdPtAnalysis->SetHistogramsOn(kFALSE);
83     task->AddAnalysisObject( fdNdPtAnalysis );
84   }
85
86   // create correction object
87   if(outputObject == AlidNdPtHelper::kCorrection) 
88   {
89     AlidNdPtCorrection *fdNdPtCorrection = new AlidNdPtCorrection("dNdPtCorrection","dN/dPt Correction", corrFile);
90
91     fdNdPtCorrection->SetEventCuts(evtCuts);
92     fdNdPtCorrection->SetAcceptanceCuts(accCuts);
93     fdNdPtCorrection->SetTrackCuts(esdTrackCuts);
94     fdNdPtCorrection->SetAnalysisMode(analysisMode); 
95     fdNdPtCorrection->SetTrigger(AlidNdPtHelper::kMB1); 
96     if (bUseMCInfo) fdNdPtCorrection->SetUseMCInfo(kTRUE);
97
98     task->AddAnalysisObject( fdNdPtCorrection );
99   }
100
101   // Add task
102   mgr->AddTask(task);
103
104   // Add ESD handler
105   AliESDInputHandler* esdH = new AliESDInputHandler;
106   //esdH->SetInactiveBranches("*");
107   mgr->SetInputEventHandler(esdH);
108
109   if(bUseMCInfo) {
110   // Enable MC event handler
111     AliMCEventHandler* handler = new AliMCEventHandler;
112     handler->SetReadTR(kFALSE);
113     //handler->SetReadTR(kTRUE);
114     mgr->SetMCtruthEventHandler(handler);
115   }
116
117   // Create input chain
118   gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C");
119   TChain* chain = CreateESDChain(fileList, NumberOfFiles, fromFile);
120   if(!chain) {
121     printf("ERROR: chain cannot be created\n");
122     return;
123   }
124
125   // Create containers for input
126   //AliAnalysisDataContainer *cinput = mgr->CreateContainer("cchain", TChain::Class(), AliAnalysisManager::kInputContainer);
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