376d6e128a38f7e075d12a190aa958e546998114
[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
25   TChain* chain = 0;
26   TVirtualProof* proof = 0;
27   if (aProof == kFALSE)
28     chain = CreateESDChainFromDir(data, nRuns, offset);
29   else
30   {
31     chain = CreateESDChainFromList(data, nRuns, offset);
32     proof = gROOT->Proof("jgrosseo@lxb6046");
33
34     if (!proof)
35     {
36       printf("ERROR: PROOF connection not established.\n");
37       return;
38     }
39
40     if (proof->EnablePackage("ESD"))
41     {
42       printf("ERROR: ESD package could not be enabled.\n");
43       return;
44     }
45
46     if (proof->EnablePackage("PWG0base"))
47     {
48       printf("ERROR: PWG0base package could not be enabled.\n");
49       return;
50     }
51
52     if (aMC != kFALSE)
53     {
54       if (proof->EnablePackage("PWG0dep"))
55       {
56         printf("ERROR: PWG0dep package could not be enabled.\n");
57         return;
58       }
59     }
60
61     chain->SetProof(proof);
62   }
63
64   // ########################################################
65   // selection of esd tracks
66   AliESDtrackCuts* esdTrackCuts = CreateTrackCuts();
67   if (!esdTrackCuts)
68   {
69     printf("ERROR: esdTrackCuts could not be created\n");
70     return;
71   }
72
73   chain->GetUserInfo()->Add(esdTrackCuts);
74   if (proof)
75     proof->AddInput(esdTrackCuts);
76
77   TString selectorName = ((aMC == kFALSE) ? "AlidNdEtaAnalysisESDSelector" : "AlidNdEtaAnalysisMCSelector");
78   AliLog::SetClassDebugLevel(selectorName, AliLog::kInfo);
79
80   // workaround for a bug in PROOF that only allows header files for .C files
81   // please create symlink from <selector>.cxx to <selector>.C
82   if (proof != kFALSE)
83     selectorName += ".C+";
84   else
85     selectorName += ".cxx+";
86
87   if (aDebug != kFALSE)
88     selectorName += "g";
89
90   TStopwatch timer;
91   timer.Start();
92
93   Long64_t result = chain->Process(selectorName);
94   if (result != 0)
95   {
96     printf("ERROR: Executing process failed with %d.\n", result);
97     return;
98   }
99
100   timer.Stop();
101   timer.Print();
102
103   CreatedNdEta(aMC ? kFALSE : kTRUE, aMC ? "analysis_mc.root" : "analysis_esd.root");
104 }
105