Added dummy task for deleting geometry in Terminate of runCalibTrain (both cpass0...
[u/mrichter/AliRoot.git] / PWGPP / CalibMacros / CPass1 / runCalibTrain.C
1 /*
2   Template of calibration/filtering macro using ESD:
3   - requires AliESDs.root and AliESDfriend.root
4   - requires OCDB access (default set to "raw://")
5   - requires run number as argument to init OCDB
6   - calls LoadLibraries.C, ConfigCalibTrain.C and AddTaskTPCCalib.C macros
7   - output AliESDfriends_v1.root with TPC and TRD calibration objects are created
8
9   Example:
10   .L $ALICE_ROOT/ANALYSIS/macros/runCalibTrain.C
11   runCalibTrain("104892");
12 */
13
14 void runCalibTrain(Int_t runNumber, const char *inFileName = "AliESDs.root", const char *ocdb="raw://")
15 {
16   //
17   // macro to run TPC calibration train 
18   //
19   AliSysInfo::SetVerbose(kTRUE);
20   AliLog::SetGlobalLogLevel(AliLog::kError); 
21   gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/commonMacros/CleanGeom.C++");
22   gROOT->Macro("$ALICE_ROOT/PWGPP/CalibMacros/CPass1/LoadLibraries.C");
23   gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass1/ConfigCalibTrain.C");
24
25   // detector tasks
26   gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass1/AddTaskTPCCalib.C");
27   gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass1/AddTaskTRDCalib.C");
28   gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass1/AddTOFAnalysisTaskCalibPass0.C");
29   gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass1/AddTaskT0Calib.C");
30   //  gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass1/AddTaskMeanVertexCalib.C");
31   gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass1/AddTaskSDDCalib.C"); 
32
33   // switch off debug 
34   AliLog::SetClassDebugLevel("AliESDEvent",0);
35   
36   // steering input chain
37   TChain *chain = new TChain("esdTree");
38   chain->Add(inFileName);
39
40   // config calibration train
41   // setting geometry and B-field from GRP
42   printf("runNumber from runCalibTrain = %d\n",runNumber);
43   printf("ocdb from runCalibTrain = %s\n",ocdb);
44   AliSysInfo::AddStamp("BeforeConfiguringCalibTrain");
45   ConfigCalibTrain(runNumber, ocdb);
46   AliSysInfo::AddStamp("AfterConfiguringCalibTrain");  
47   
48   if (gROOT->LoadMacro("localOCDBaccessConfig.C")==0) {
49     localOCDBaccessConfig();
50   }
51   
52   //
53   // check the presence of the detectors
54   AliCDBEntry* entry = AliCDBManager::Instance()->Get("GRP/GRP/Data");
55   AliGRPObject* grpData = dynamic_cast<AliGRPObject*>(entry->GetObject()); 
56   if (!grpData) {printf("Failed to get GRP data for run",runNumber); return;}
57   Int_t activeDetectors = grpData->GetDetectorMask(); 
58   TString detStr = AliDAQ::ListOfTriggeredDetectors(activeDetectors);
59   printf("Detectors in the data:\n%s\n",detStr.Data());
60
61   // setup analysis
62   //
63   AliAnalysisManager *mgr  = new AliAnalysisManager("ESD to ESD", "Analysis Manager");
64   // mgr->SetDebugLevel(3);
65   mgr->SetNSysInfo(50);   
66
67   // Input
68   AliESDInputHandler* inpHandler = new AliESDInputHandler();
69   inpHandler->SetReadFriends(1);
70   mgr->SetInputEventHandler(inpHandler);
71   
72   // Output
73   const char *outFile = "AliESDfriends_v1.root";
74   AliESDHandler* esdHandler   = new AliESDHandler();
75   mgr->SetOutputEventHandler(esdHandler);
76   esdHandler->SetOutputFileName(outFile);
77   mgr->SetCommonFileName(outFile);
78   //  
79   // Detector Tasks
80   //
81   AliSysInfo::AddStamp("BeforeTPC");
82   if ( detStr.Contains("TPC"))  AddTaskTPCCalib(runNumber);
83
84   AliSysInfo::AddStamp("BeforeTRD");
85   if ( detStr.Contains("TRD") && detStr.Contains("TPC"))  AddTaskTRDCalib(runNumber);
86
87   AliSysInfo::AddStamp("BeforeTOF");
88   if ( detStr.Contains("TOF") && detStr.Contains("TPC"))  AddTOFAnalysisTaskCalibPass0();
89
90   AliSysInfo::AddStamp("BeforeT0");
91   if ( detStr.Contains("T0"))   AddTaskT0Calib(runNumber);
92   //if ( detStr.Contains("ITSSPD")) tMeanVtx = AddTaskMeanVertexCalib();
93   //
94   Bool_t okTPC = detStr.Contains("TPC");
95   Bool_t useTPCcrv=kFALSE;
96   Bool_t writeITSTP = kFALSE;
97   if (!okTPC) useTPCcrv = kFALSE;
98   AliSysInfo::AddStamp("BeforeSDD");
99   AliAnalysisTaskITSAlignQA *itsAlign = AddTaskSDDCalib(0,writeITSTP,useTPCcrv);
100   if (!okTPC) itsAlign->SetUseITSstandaloneTracks(kTRUE);
101   if (grpData->GetL3Current()[0] < 300) itsAlign->SetMinPt(0.001); 
102   //
103   // dummy task to clean geometry in Terminate >>>>
104   CleanGeom* clgmTask = new CleanGeom("cleanGeom");
105   mgr->AddTask(clgmTask);
106   AliAnalysisDataContainer *dummyInp = mgr->GetCommonInputContainer();
107   if (dummyInp) mgr->ConnectInput(clgmTask,0,dummyInp);
108   // dummy task to clean geometry in Terminate <<<<
109   //
110   // Run the analysis
111   AliSysInfo::AddStamp("BeforeInitAnalysis");
112   if (!mgr->InitAnalysis()) {
113     printf("Analysis cannot be started, returning\n");
114     return;
115   }
116   
117   mgr->PrintStatus();
118   AliSysInfo::AddStamp("BeforeStartAnalysis");
119   mgr->StartAnalysis("local", chain);
120   
121   return;
122 }