]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG0/trigger/run.C
production each trigger histogram per hardware trigger class
[u/mrichter/AliRoot.git] / PWG0 / trigger / run.C
1 void Load(const char* taskName, Bool_t debug)
2 {
3   TString compileTaskName;
4   compileTaskName.Form("%s.cxx++", taskName);
5   if (debug)
6     compileTaskName += "g";
7
8   if (gProof) {
9     gProof->Load(compileTaskName);
10   } else
11     gROOT->Macro(compileTaskName);
12
13   // Enable debug printouts
14   if (debug)
15   {
16     AliLog::SetClassDebugLevel(taskName, AliLog::kDebug+2);
17   }
18   else
19     AliLog::SetClassDebugLevel(taskName, AliLog::kWarning);
20 }
21
22 void GetTimes(UInt_t run, Int_t* startTime = 0, Int_t* endTime = 0)
23 {
24   gSystem->Load("libXMLParser");
25   gSystem->Load("libXMLIO");
26   gSystem->Load("libCDB");
27   gSystem->Load("libSTEER");
28   
29   AliCDBManager * man = AliCDBManager::Instance();
30   man->SetDefaultStorage("alien://folder=/alice/data/2009/OCDB");
31   //man->SetRun(run);
32   AliCDBPath cdb("GRP", "GRP", "Data");
33   obj = man->Get(cdb, run);
34   grp = (AliGRPObject*) obj->GetObject();
35   
36   if (startTime)
37     *startTime = grp->GetTimeStart();
38   if (endTime)
39     *endTime = grp->GetTimeEnd();
40   
41   Printf("Got start and endtime from OCDB: %d, %d", grp->GetTimeStart(), grp->GetTimeEnd());
42 }
43
44 void run(const Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aDebug = kFALSE, Int_t aProof = kFALSE, Int_t startTime = 0, Int_t endTime = 0, const char* option = "")
45 {
46   // aProof option: 0 no proof
47   //                1 proof with chain
48   //                2 proof with dataset
49   //
50   // option is passed to the task(s)
51
52 /*
53  .x run.C("/PWG0/jgrosseo/ERP_run98097", -1, 0, kFALSE, 2, 1258045012, 1258045458)
54  .x run.C("/PWG0/jgrosseo/ERP_run98576", -1, 0, kFALSE, 2, 1258123911, 1258124103)
55  .x run.C("/PWG0/jgrosseo/ERP_run98569", -1, 0, kFALSE, 2, 1258122187, 1258122524)
56  .x run.C("/PWG0/jgrosseo/run101235", -1, 0, kFALSE, 2, 1258821541, 1258822595) 
57  .x run.C("/PWG0/jgrosseo/bgRuns_101424to102689_allITS_2", -1, 0, kFALSE, 2, 1258950519, 1259567587) 
58  .x run.C("/PWG0/jgrosseo/run000102556", -1, 0, kFALSE, 2, 1259481473, 1259494364) 
59  
60   timestamps:
61  .x run.C("/ALIREC/aliprod/run101498", -1, 0, kFALSE, 2, 1258990726, 1258993311) 
62   orbits:
63  .x run.C("/ALIREC/aliprod/run101498", -1, 0, kFALSE, 2, 13587, 16749493) 
64  
65  .x run.C("/ALIREC/aliprod/run104044", -1, 0, 1, 2, 1260078397, 1260082975) 
66  
67  .x run.C("/ALIREC/aliprod/run104065", -1, 0, 1, 2, 1260084071, 1260084250)
68  .x run.C("/ALIREC/aliprod/run104065", -1, 0, 1, 2, 1353, 1504)
69
70  .x run.C("/ALIREC/aliprod/run104321", -1, 0, 1, 2, 1260237771, 1260249377)
71
72 */
73   
74   if (nRuns < 0)
75     nRuns = 1234567890;
76
77   if (aProof)
78   {
79     //TProof::Mgr("alicecaf")->SetROOTVersion("v5-24-00a"); 
80     TProof::Open("alicecaf"); 
81     //gProof->SetParallel(1);
82
83     // Enable the needed package
84     if (1)
85     {
86       gProof->UploadPackage("$ALICE_ROOT/STEERBase");
87       gProof->EnablePackage("$ALICE_ROOT/STEERBase");
88       gProof->UploadPackage("$ALICE_ROOT/ESD");
89       gProof->EnablePackage("$ALICE_ROOT/ESD");
90       gProof->UploadPackage("$ALICE_ROOT/AOD");
91       gProof->EnablePackage("$ALICE_ROOT/AOD");
92       gProof->UploadPackage("$ALICE_ROOT/ANALYSIS");
93       gProof->EnablePackage("$ALICE_ROOT/ANALYSIS");
94       gProof->UploadPackage("$ALICE_ROOT/ANALYSISalice");
95       gProof->EnablePackage("$ALICE_ROOT/ANALYSISalice");
96     }
97     else
98     {
99       gProof->UploadPackage("$ALICE_ROOT/AF-v4-18-12-AN.par");
100       gProof->EnablePackage("AF-v4-18-12-AN");
101     }
102
103     gProof->UploadPackage("$ALICE_ROOT/PWG0base");
104     gProof->EnablePackage("$ALICE_ROOT/PWG0base");
105   }
106   else
107   {
108     gSystem->AddIncludePath("-I${ALICE_ROOT}/include/ -I${ALICE_ROOT}/PWG0/ -I${ALICE_ROOT}/PWG0/dNdEta/"); 
109     gSystem->Load("libVMC");
110     gSystem->Load("libTree");
111     gSystem->Load("libProof");
112     gSystem->Load("libSTEERBase");
113     gSystem->Load("libESD");
114     gSystem->Load("libAOD");
115     gSystem->Load("libANALYSIS");
116     gSystem->Load("libANALYSISalice");
117     gSystem->Load("libPWG0base");
118   }
119   
120   if (startTime == endTime && startTime > 0)
121   {
122     // get times from OCDB, startTime must be run number
123
124     // WARNING only works if your par files loaded above are compatible with the libraries loaded here...
125     GetTimes(startTime, &startTime, &endTime);
126   }
127
128   // Create the analysis manager
129   mgr = new AliAnalysisManager;
130
131   // Add ESD handler
132   AliESDInputHandler* esdH = new AliESDInputHandler;
133   esdH->SetInactiveBranches("AliESDACORDE ALIESDTZERO AliRawDataErrorLogs CaloClusters Cascades EMCALCells EMCALTrigger ESDfriend Kinks Kinks Cascades AliESDTZERO ALIESDACORDE MuonTracks TrdTracks CaloClusters");
134   mgr->SetInputEventHandler(esdH);
135
136   cInput = mgr->GetCommonInputContainer();
137   
138   Load("AliTriggerTask", aDebug);
139   TString optStr(option);
140   
141   // remove SAVE option if set
142   Bool_t save = kFALSE;
143   if (optStr.Contains("SAVE"))
144   {
145     optStr = optStr(0,optStr.Index("SAVE")) + optStr(optStr.Index("SAVE")+4, optStr.Length());
146     save = kTRUE;
147   }
148   
149   task = new AliTriggerTask(optStr);
150   task->SetTimes(startTime, endTime);
151   //task->SetUseOrbits(kTRUE);
152   
153   physicsSelection = new AliPhysicsSelection;
154   if (startTime == -1)
155     physicsSelection->SetAnalyzeMC();
156   task->SetPhysicsSelection(physicsSelection);
157   AliBackgroundSelection* backgroundSelection = new AliBackgroundSelection;
158   physicsSelection->AddBackgroundIdentification(backgroundSelection);
159
160   mgr->AddTask(task);
161
162   // Attach input
163   mgr->ConnectInput(task, 0, cInput);
164
165   // Attach output
166   cOutput = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer);
167   mgr->ConnectOutput(task, 0, cOutput);
168
169   // Enable debug printouts
170   if (aDebug)
171     mgr->SetDebugLevel(2);
172
173   // Run analysis
174   mgr->InitAnalysis();
175   mgr->PrintStatus();
176
177   if (aProof == 2)
178   {
179     // process dataset
180
181     mgr->StartAnalysis("proof", data, nRuns, offset);
182
183     if (save)
184     {
185       TString path("maps/");
186       path += TString(data).Tokenize("/")->Last()->GetName();
187       
188       gSystem->mkdir(path, kTRUE);
189       gSystem->Rename("trigger.root", path + "/trigger.root");
190       
191       Printf(">>>>> Moved files to %s", path.Data());
192     }  
193   }
194   else if (aProof == 3)
195   {
196     gROOT->ProcessLine(".L CreateChainFromDataSet.C");
197     ds = gProof->GetDataSet(data)->GetStagedSubset();
198     chain = CreateChainFromDataSet(ds, "esdTree", nRuns);
199     mgr->StartAnalysis("local", chain, nRuns, offset);
200   }
201   else
202   {
203     // Create chain of input files
204     gROOT->LoadMacro("../CreateESDChain.C");
205
206     chain = CreateESDChain(data, nRuns, offset);
207     //chain = CreateChain("TE", data, nRuns, offset);
208
209     mgr->StartAnalysis((aProof > 0) ? "proof" : "local", chain);
210   }
211
212 }