]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG0/trigger/run.C
added ZDC trigger
[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, UInt_t* startTime = 0, UInt_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("raw://");
31   man->SetRun(run);
32   AliCDBPath cdb("GRP", "GRP", "Data");
33   obj = man->Get(cdb);
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, UInt_t startTime = 0, UInt_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 */
57   
58   if (nRuns < 0)
59     nRuns = 1234567890;
60
61   if (aProof)
62   {
63     TProof::Open("alicecaf"); 
64     //gProof->SetParallel(1);
65
66     // Enable the needed package
67     if (1)
68     {
69       gProof->UploadPackage("$ALICE_ROOT/STEERBase");
70       gProof->EnablePackage("$ALICE_ROOT/STEERBase");
71       gProof->UploadPackage("$ALICE_ROOT/ESD");
72       gProof->EnablePackage("$ALICE_ROOT/ESD");
73       gProof->UploadPackage("$ALICE_ROOT/AOD");
74       gProof->EnablePackage("$ALICE_ROOT/AOD");
75       gProof->UploadPackage("$ALICE_ROOT/ANALYSIS");
76       gProof->EnablePackage("$ALICE_ROOT/ANALYSIS");
77       gProof->UploadPackage("$ALICE_ROOT/ANALYSISalice");
78       gProof->EnablePackage("$ALICE_ROOT/ANALYSISalice");
79     }
80     else
81     {
82       gProof->UploadPackage("/afs/cern.ch/alice/caf/sw/ALICE/PARs/v4-17-Release/AF-v4-17");
83       gProof->EnablePackage("AF-v4-17");
84     }
85
86     gProof->UploadPackage("$ALICE_ROOT/PWG0base");
87     gProof->EnablePackage("$ALICE_ROOT/PWG0base");
88   }
89   else
90   {
91     gSystem->AddIncludePath("-I${ALICE_ROOT}/include/ -I${ALICE_ROOT}/PWG0/ -I${ALICE_ROOT}/PWG0/dNdEta/"); 
92     gSystem->Load("libVMC");
93     gSystem->Load("libTree");
94     gSystem->Load("libProof");
95     gSystem->Load("libSTEERBase");
96     gSystem->Load("libESD");
97     gSystem->Load("libAOD");
98     gSystem->Load("libANALYSIS");
99     gSystem->Load("libANALYSISalice");
100     gSystem->Load("libPWG0base");
101   }
102   
103   if (startTime == endTime && startTime > 0)
104   {
105     // get times from OCDB, startTime must be run number
106
107     // WARNING only works if your par files loaded above are compatible with the libraries loaded here...
108     GetTimes(startTime, &startTime, &endTime);
109   }
110
111   // Create the analysis manager
112   mgr = new AliAnalysisManager;
113
114   // Add ESD handler
115   AliESDInputHandler* esdH = new AliESDInputHandler;
116   esdH->SetInactiveBranches("AliESDACORDE ALIESDTZERO AliRawDataErrorLogs CaloClusters Cascades EMCALCells EMCALTrigger ESDfriend Kinks Kinks Cascades AliESDTZERO ALIESDACORDE MuonTracks TrdTracks CaloClusters");
117   mgr->SetInputEventHandler(esdH);
118
119   cInput = mgr->GetCommonInputContainer();
120   
121   Load("AliTriggerTask", aDebug);
122   TString optStr(option);
123   task = new AliTriggerTask(optStr);
124   task->SetTimes(startTime, endTime);
125
126   mgr->AddTask(task);
127
128   // Attach input
129   mgr->ConnectInput(task, 0, cInput);
130
131   // Attach output
132   cOutput = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer);
133   mgr->ConnectOutput(task, 0, cOutput);
134
135   // Enable debug printouts
136   if (aDebug)
137     mgr->SetDebugLevel(2);
138
139   // Run analysis
140   mgr->InitAnalysis();
141   mgr->PrintStatus();
142
143   if (aProof == 2)
144   {
145     // process dataset
146
147     mgr->StartAnalysis("proof", data, nRuns, offset);
148   }
149   else if (aProof == 3)
150   {
151     gROOT->ProcessLine(".L CreateChainFromDataSet.C");
152     ds = gProof->GetDataSet(data)->GetStagedSubset();
153     chain = CreateChainFromDataSet(ds);
154     mgr->StartAnalysis("local", chain, nRuns, offset);
155   }
156   else
157   {
158     // Create chain of input files
159     gROOT->LoadMacro("../CreateESDChain.C");
160
161     chain = CreateESDChain(data, nRuns, offset);
162     //chain = CreateChain("TE", data, nRuns, offset);
163
164     mgr->StartAnalysis((aProof > 0) ? "proof" : "local", chain);
165   }
166 }