]>
Commit | Line | Data |
---|---|---|
154117a7 | 1 | void runProof(Int_t runNumber, Int_t nev = 10000, Int_t firstev = 0,TString proofCluster="aliprod@alice-caf.cern.ch",TString workers="") |
2 | { | |
3 | gEnv->SetValue("XSec.GSI.DelegProxy","2"); | |
4 | ||
5 | // Select ROOT version | |
6 | TProof::Mgr(proofCluster.Data())->SetROOTVersion(Form("VO_ALICE@ROOT::%s",gSystem->GetFromPipe("echo $ROOTSYS | awk -F/ '{print $NF}'").Data())); | |
7 | ||
8 | // set ALIROOT mode to REC | |
9 | TList * list = new TList(); | |
10 | list->Add(new TNamed("ALIROOT_MODE", "REC")); | |
11 | list->Add(new TNamed("ALIROOT_ENABLE_ALIEN", "1")); | |
12 | // Login to CAF | |
13 | ||
14 | TString workersStr; | |
15 | if (!workers.IsNull()) workersStr=Form("workers=%s",workers.Data()); | |
16 | ||
17 | // connecting to proof cluster | |
18 | TProof::Open(proofCluster.Data(),workersStr.Data()); | |
19 | ||
20 | // seting up aliroot version | |
21 | TString alirootVer = Form("VO_ALICE@AliRoot::%s",gSystem->GetFromPipe("echo $ALICE_ROOT | awk -F/ '{print $NF}'").Data()); | |
22 | ||
23 | // Enable AliRoot | |
24 | Printf("Setting aliroot version on caf to %s ...",alirootVer.Data()); | |
25 | if (gProof->EnablePackage(alirootVer.Data(), list)) { | |
26 | Error("run.C",Form("Error enabling proof package %s !!!!",alirootVer.Data())); | |
27 | return; | |
28 | } | |
29 | ||
30 | ||
31 | gSystem->Load("libMonaLisa.so"); | |
32 | TMonaLisaWriter monalisa("pcalishuttle02.cern.ch","SHIFTER_RECO_CAF"); | |
33 | SendMonaLisaData(&monalisa,runNumber,"Started",0); | |
34 | ||
35 | // Temporary fix in order to avoid timeouts on the master | |
36 | Int_t numWorkers = gProof->GetParallel(); | |
37 | gProof->SetParameter("PROOF_PacketizerStrategy", (Int_t)0); | |
38 | gProof->SetParameter("PROOF_PacketAsAFraction", (Int_t) nev/numWorkers); | |
39 | // gProof->SetParameter("PROOF_MinPacketTime", 8); | |
40 | // gProof->SetParameter("PROOF_MaxPacketTime", 5); | |
41 | ||
42 | // Set some verbosity | |
43 | // gProof->SetLogLevel(3); | |
44 | ||
45 | ||
46 | // Run reconstruction | |
47 | gROOT->LoadMacro("rec.C"); | |
48 | gROOT->ProcessLine(Form("rec(%d,%d,%d);",runNumber,nev,firstev)); | |
49 | ||
50 | TProof::Mgr(proofCluster.Data())->GetSessionLogs()->Save("*",Form("log/run%d.log",runNumber)); | |
51 | ||
52 | // Check the produced dataset | |
53 | TFileCollection *coll = gProof->GetDataSet(Form("run%d",runNumber)); | |
54 | if (coll) { | |
55 | Int_t nEvents = coll->GetTotalEntries("/esdTree"); | |
56 | if (nEvents > 0) { | |
57 | cout << "===========================================================================" << endl; | |
58 | cout << nEvents << " events reconstructed and stored in the dataset run" << runNumber << endl; | |
59 | cout << "===========================================================================" << endl; | |
60 | cout << "The dataset is:" << endl; | |
61 | coll->Print(); | |
62 | cout << "===========================================================================" << endl; | |
63 | SendMonaLisaData(&monalisa,runNumber,"Done",nEvents); | |
64 | } | |
65 | else { | |
66 | SendMonaLisaData(&monalisa,runNumber,"No_Events",nEvents); | |
67 | } | |
68 | } | |
69 | else { | |
70 | SendMonaLisaData(&monalisa,runNumber,"Failure",0); | |
71 | } | |
72 | } | |
73 | ||
74 | void SendMonaLisaData(TMonaLisaWriter *monalisa, Int_t runNumber, const char* status, Int_t nEvents) | |
75 | { | |
76 | TMonaLisaText mlStatus("Status",status); | |
77 | TMonaLisaValue mlEventCount("Event_count",nEvents); | |
78 | TList mlList; | |
79 | mlList.Add(&mlStatus); | |
80 | mlList.Add(&mlEventCount); | |
81 | TString mlID; | |
82 | mlID.Form("%d",runNumber); | |
83 | monalisa->SendParameters(&mlList, mlID.Data()); | |
84 | } | |
85 | ||
86 | void LoadRecMacroOnClient() { | |
87 | gSystem->AddIncludePath(Form("-I\"%s/include\"", gSystem->Getenv("ALICE_ROOT"))); | |
88 | gROOT->Macro("$ALICE_ROOT/macros/loadlibsrec.C"); | |
89 | } |