adding selector that creates histograms needed for systematic uncertainty
[u/mrichter/AliRoot.git] / PWG0 / dNdEta / testAnalysis2.C
1 /* $Id$ */
2
3 //
4 // Script to test the dN/dEta analysis using the dNdEtaAnalysis and
5 // dNdEtaCorrection classes. Note that there is a cut on the events,
6 // so the measurement will be biassed.
7 //
8 // implementation with TSelector
9 //
10
11 #include "../CreateESDChain.C"
12
13 void testAnalysis2(Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aMC = kFALSE, Bool_t aDebug = kFALSE, Bool_t aProof = kFALSE)
14 {
15   gSystem->Load("libEG");
16   gSystem->Load("libGeom");
17   gSystem->Load("libESD");
18   gSystem->Load("libPWG0base");
19   if (aMC != kFALSE)
20     gSystem->Load("libPWG0dep");
21
22   gROOT->ProcessLine(".L CreatedNdEta.C");
23   gROOT->ProcessLine(".L CreateCuts.C");
24   gROOT->ProcessLine(".L drawPlots.C");
25
26   TChain* chain = CreateESDChain(data, nRuns, offset);;
27   TVirtualProof* proof = 0;
28
29   if (aProof != kFALSE)
30   {
31     proof = TProof::Open("jgrosseo@lxb6046");
32
33     if (!proof)
34     {
35       printf("ERROR: PROOF connection not established.\n");
36       return;
37     }
38
39     if (proof->EnablePackage("ESD"))
40     {
41       printf("ERROR: ESD package could not be enabled.\n");
42       return;
43     }
44
45     if (proof->EnablePackage("PWG0base"))
46     {
47       printf("ERROR: PWG0base package could not be enabled.\n");
48       return;
49     }
50
51     if (aMC != kFALSE)
52     {
53       if (proof->EnablePackage("PWG0dep"))
54       {
55         printf("ERROR: PWG0dep package could not be enabled.\n");
56         return;
57       }
58     }
59
60     //chain->SetProof(proof);
61   }
62
63   // ########################################################
64   // selection of esd tracks
65   AliESDtrackCuts* esdTrackCuts = CreateTrackCuts();
66   if (!esdTrackCuts)
67   {
68     printf("ERROR: esdTrackCuts could not be created\n");
69     return;
70   }
71
72   chain->GetUserInfo()->Add(esdTrackCuts);
73   if (proof)
74     proof->AddInput(esdTrackCuts);
75
76   if (aMC == kFALSE)
77   {
78     AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection("dndeta_correction", "dndeta_correction");
79     dNdEtaCorrection->LoadHistograms("correction_map.root","dndeta_correction");
80     dNdEtaCorrection->ReduceInformation();
81     //dNdEtaCorrection->RemoveEdges(2, 0, 2);
82
83     chain->GetUserInfo()->Add(dNdEtaCorrection);
84     if (proof)
85       proof->AddInput(dNdEtaCorrection);
86   }
87
88   TString selectorName = ((aMC == kFALSE) ? "AlidNdEtaAnalysisESDSelector" : "AlidNdEtaAnalysisMCSelector");
89   AliLog::SetClassDebugLevel(selectorName, AliLog::kInfo);
90
91   selectorName += ".cxx++";
92
93   if (aDebug != kFALSE)
94     selectorName += "g";
95
96   TStopwatch timer;
97   timer.Start();
98
99   Long64_t result = -1;
100
101   if (proof != kFALSE)
102     result = chain->MakeTDSet()->Process(selectorName);
103   else
104     result = chain->Process(selectorName);
105
106   if (result != 0)
107   {
108     printf("ERROR: Executing process failed with %d.\n", result);
109     return;
110   }
111
112   timer.Stop();
113   timer.Print();
114
115   dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta");
116
117   TFile* file = TFile::Open(aMC ? "analysis_mc.root" : "analysis_esd.root");
118   if (!file)
119   {
120     cout << "Error. File not found" << endl;
121     return;
122   }
123   fdNdEtaAnalysis->LoadHistograms();
124   fdNdEtaAnalysis->DrawHistograms();
125
126   dNdEta(kTRUE);
127 }
128