]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/UPGRADE/testITSU/runanLoc.C
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / ITS / UPGRADE / testITSU / runanLoc.C
CommitLineData
fa10255f 1TChain* loadChain(const char* inpData, const char* chName="esdTree");
2const TObjArray* GetTrackingConditions(const char* recopar="ITS/Calib/RecoParam/Run0_999999999_v0_s0.root");
3
4void runanLoc(const char* inpData="AliESDs.root", const char* outFile="tstPerfAn.root")
5{
6 // runs analysis task on local data
7 //
8 gROOT->ProcessLine(".x LoadLibs.C(1)");
9 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
10 if (!mgr) mgr = new AliAnalysisManager("Test reco analysis");
11 AliAnalysisDataContainer *cinp = (AliAnalysisDataContainer*)mgr->GetCommonInputContainer();
12 //
13 AliESDInputHandler *esdInputHandler = dynamic_cast<AliESDInputHandler*>(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
14 if (!esdInputHandler) esdInputHandler = new AliESDInputHandlerRP();
15 mgr->SetInputEventHandler(esdInputHandler);
16 //
17 AliMCEventHandler* mcInputHandler = dynamic_cast<AliMCEventHandler*>(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
18 if (!mcInputHandler) mcInputHandler = new AliMCEventHandler();
19 mgr->SetMCtruthEventHandler(mcInputHandler);
20 mcInputHandler->SetPreReadMode(AliMCEventHandler::kLmPreRead);
21 //
22 gROOT->ProcessLine(".L AliTaskITSUPerf.cxx++");
23 AliTaskITSUPerf* task = new AliTaskITSUPerf("tstAnalysis");
24 TString outFString = outFile;
25 if (outFString.IsNull()) outFString = "recAnOut.root";
26 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("clist", TList::Class(),AliAnalysisManager::kOutputContainer,outFString.Data());
27 mgr->AddTask(task);
28 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
29 mgr->ConnectOutput(task,1,coutput1);
30 task->SetUseMC(1); // at the moment not irrelevant
31 //
32 // configure task
33 task->SetEtaMin(-3);
34 task->SetEtaMax(3);
35 task->SetNPtBins(10);
891efa00 36 task->SetNResBins(200);
37 task->SetPtMax(10);
fa10255f 38 //
39 // optionally set reconstructability condition
40 task->SetTrackingConditions(GetTrackingConditions());
41 //
42 TChain *chain = loadChain(inpData);
43 if (!chain) return;
44 mgr->InitAnalysis();
45 mgr->StartAnalysis("local",chain);
46 //
47}
48
49const TObjArray* GetTrackingConditions(const char* recopar)
50{
51 // load tracking conditions used in reco
52 TString rpfstr = recopar;
53 Bool_t fail = kFALSE;
54 const TObjArray* trCondArr = 0;
55 while(1) {
56 TFile* rpf = 0;
57 if (rpfstr.IsNull() || !(rpf=TFile::Open(rpfstr.Data()))) {fail = kTRUE; break;}
58 AliCDBEntry* cdbe = (AliCDBEntry*)rpf->Get("AliCDBEntry");
59 if (!cdbe) {fail = kTRUE; break;}
60 TObjArray* recoParArr = (TObjArray*)cdbe->GetObject();
61 if (!recoParArr) {fail = kTRUE; break;}
62 AliITSURecoParam* recoPar = (AliITSURecoParam*) recoParArr->At(1);
63 if (!recoPar) {fail = kTRUE; break;}
64 trCondArr = recoPar->GetTrackingConditions();
65 if (!trCondArr) {fail = kTRUE; break;}
66 break;
67 }
68 if (fail) {printf("Tracking conditions must be extracted from valid recoparams, path is %s\n",recopar); exit(1);}
69 //
70 return trCondArr;
71}
72
73//________________________________________________________________________________
74TChain* loadChain(const char* inpData, const char* chName)
75{
76 TChain* chain = new TChain(chName);
77 //
78 TString inpDtStr = inpData;
79 if (inpDtStr.EndsWith(".root")) {
80 if (!inpDtStr.Contains("/")) inpDtStr = Form("%s/%s",gSystem->pwd(),inpDtStr.Data());
81 printf("Setting %s as an input\n",inpDtStr.Data());
82 chain->AddFile(inpDtStr.Data());
699d8344 83 if (!gGrid && inpDtStr.Contains("alien")) TGrid::Connect("alien://");
fa10255f 84 }
85 else {
86 //
87 ifstream inpf(inpData);
88 if (!inpf.good()) {
89 printf("Failed on input filename %s\n",inpData);
90 return kFALSE;
91 }
92 //
93 TString flName;
94 flName.ReadLine(inpf);
95 while ( !flName.IsNull() ) {
96 flName = flName.Strip(TString::kBoth,' ');
97 if (flName.BeginsWith("//") || flName.BeginsWith("#")) {flName.ReadLine(inpf); continue;}
98 flName = flName.Strip(TString::kBoth,',');
99 flName = flName.Strip(TString::kBoth,'"');
100 if (!flName.Contains("/")) flName = Form("%s/%s",gSystem->pwd(),flName);
101 printf("Adding %s\n",flName.Data());
102 chain->AddFile(flName.Data());
699d8344 103 if (!gGrid && flName.Contains("alien")) TGrid::Connect("alien://");
fa10255f 104 flName.ReadLine(inpf);
105 }
106 }
107 //
108 int n = chain->GetEntries();
109 if (n<1) {
110 printf("Obtained chain is empty\n");
111 return 0;
112 }
113 else printf("Opened %s chain with %d entries\n",chName,n);
114 return chain;
115}