]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/macros/CalibrateTPC.C
729a103ce38e9a61b64e51768bb01d08e4f55945
[u/mrichter/AliRoot.git] / TPC / macros / CalibrateTPC.C
1 /*
2   Simple calibration analysis
3   //
4   //0. Setup memory chcecker if you want 
5   //
6   gSystem->Load("$ROOTSYS/lib/libGui.so");
7   gSystem->Load("$ROOTSYS/lib/libTree.so");
8   gSystem->Load("$MEMSTAT/libMemStat.so");
9   TMemStat *memstat = new TMemStat(100000000,10000000,kTRUE);
10   AliSysInfo::AddCallBack(TMemStatManager::GetInstance()->fStampCallBack);
11
12   AliSysInfo::AddStamp("Start");  
13   //1. Load needed libraries
14   gSystem->Load("libANALYSIS");
15   gSystem->Load("libTPCcalib");
16   //
17   // Setup analysis manager
18   //
19   .L $ALICE_ROOT/TPC/macros/CalibrateTPC.C
20   AliAnalysisManager * mgr = SetupCalibTask("/V6/");
21   //
22   // Process data - chain
23   //
24   gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
25   gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+")
26   AliXRDPROOFtoolkit tool; 
27   TChain * chain = tool.MakeChain("esd.txt","esdTree",0,100);
28   chain->Lookup();
29   // memory
30   mgr->SetNSysInfo(100); 
31   //
32   mgr->SetDebugLevel(1);
33   mgr->StartAnalysis("proof",chain);
34   //mgr->StartAnalysis("local",chain);
35   // delete manager
36   //
37   delete mgr;
38   AliSysInfo::AddStamp("End");
39   //
40   // analyze memstat report
41   //
42   delete memstat;
43   TMemStat draw("memstat.root");
44   draw.MakeReport(0,0,"order 0 sortstat 3 sortstamp 0 sortdeep 10 stackdeep 15 maxlength 50")   
45 */
46
47
48 AliAnalysisManager * SetupCalibTask(char * prefix ="/V12/") {
49   //
50   //
51   //
52   TStopwatch stopwatch;
53   stopwatch.Start();
54   //
55   // set magnetic field form the cosmos - it should be provided by framework
56   AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., 2);
57   AliTracker::SetFieldMap(field,0);
58   TGeoManager::Import("/u/miranov/proof/geometry.root");
59   //
60   TFile f("/u/miranov/GainMap.root");
61   AliTPCCalPad *gainMap = f.Get("GainMap");
62   //
63   // OCDB setup
64   //
65   AliCDBManager::Instance()->SetRun(1);
66   AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT");
67   AliTPCcalibDB::Instance()->SetExBField(0);
68   AliTPCClusterParam * param = AliTPCcalibDB::Instance()->GetClusterParam();
69   AliTPCClusterParam::SetInstance(param);
70   AliTPCcalibDB::Instance()->SetExBField(0);
71   //
72
73
74   //
75   AliAnalysisManager *mgr=new AliAnalysisManager("TestManager");
76
77   AliESDInputHandler* esdH=new AliESDInputHandler;
78   esdH->SetActiveBranches("ESDfriend");
79   mgr->SetInputEventHandler(esdH);  
80   //
81   //
82   AliCDBManager::Instance()->SetRun(1) ;
83   AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT");
84   AliTPCClusterParam * clusterParam = AliTPCcalibDB::Instance()->GetClusterParam();
85
86   AliTPCAnalysisTaskcalib *task1=new AliTPCAnalysisTaskcalib("TPC calibration task");
87   
88   AliTPCcalibTracksCuts *cuts = new AliTPCcalibTracksCuts(40, 0.4, 0.5, 0.13, 0.018);
89
90   //
91   AliTPCcalibTracks *calibTracks =  new AliTPCcalibTracks("calibTracks", "Resolution calibration object for tracks", clusterParam, cuts); 
92
93
94   AliTPCcalibTracksGain *calibTracksGain =  new AliTPCcalibTracksGain("calibTracksGain","Gain calibration using tracks",cuts); 
95   AliTPCcalibAlign *calibAlign = new AliTPCcalibAlign("alignTPC","Alignment of the TPC sectors");
96   AliTPCcalibLaser *calibLaser = new AliTPCcalibLaser("laserTPC","laserTPC");
97   AliTPCcalibCosmic *calibCosmic = new AliTPCcalibCosmic("cosmicTPC","cosmicTPC");
98   AliTPCcalibCalib *calibCalib = new AliTPCcalibCalib("calibTPC","calibTPC");
99   TTimeStamp startTime(2008,9,0,0,0,0);
100   TTimeStamp stopTime(2008,11,0,0,0,0);
101   AliTPCcalibTime *calibTime = new AliTPCcalibTime("cosmicTime","cosmicTime",0, startTime.GetSec(), stopTime.GetSec(), 5*60, 5*60);
102
103   calibCosmic->SetGainMap(gainMap);
104   calibTracksGain->SetGainMap(gainMap);
105   //
106   calibTracks->SetDebugLevel(20);
107   calibTracks->SetStreamLevel(20);
108   calibTracksGain->SetDebugLevel(2);
109   calibTracksGain->SetStreamLevel(20);
110   calibAlign->SetDebugLevel(20);
111   calibAlign->SetStreamLevel(10);
112   calibLaser->SetDebugLevel(20);
113   calibLaser->SetStreamLevel(20);
114   calibCosmic->SetDebugLevel(20);
115   calibCosmic->SetStreamLevel(2);
116   calibCalib->SetDebugLevel(20);
117   calibCalib->SetStreamLevel(10);
118
119   //
120  // ---*---*-----*-*-----*----------*---
121   // ADD CALIB JOBS HERE!!!!!!!!!!!!!!!!
122   task1->AddJob(calibCalib);
123   task1->AddJob(calibAlign);
124   task1->AddJob(calibLaser);
125   task1->AddJob(calibCosmic);
126   task1->AddJob(calibTime);
127
128   task1->AddJob(calibTracksGain);
129   task1->AddJob(calibTracks);
130   // task1->AddJob(new AliTPCcalibV0);
131   // -*----*----*---*-*------*-------**--
132   // -------*--*---------*-----*-------*-
133   TString path=gSystem->pwd();
134   path+=prefix;
135   gSystem->mkdir(path);
136   task1->SetDebugOuputhPath(path.Data());
137
138   mgr->AddTask(task1);
139
140   AliAnalysisDataContainer *cinput1
141     =mgr->CreateContainer("cchain1",TChain::Class(),
142                           AliAnalysisManager::kInputContainer);
143   AliAnalysisDataContainer *coutput1
144     =mgr->CreateContainer("TPCCalib",TObjArray::Class(),
145                           AliAnalysisManager::kOutputContainer,
146                           "CalibObjects.root");
147   
148   coutput1->SetSpecialOutput(kTRUE);
149   //coutput1->SetFileName("CalibObjectFile.root");
150   mgr->ConnectInput(task1,0,cinput1);
151   mgr->ConnectOutput(task1,0,coutput1);
152   //
153   //mgr->SetSpecialOutputLocation(path->Data());
154
155   if (!mgr->InitAnalysis()) return;
156   mgr->PrintStatus(); 
157   
158   stopwatch.Stop();
159   stopwatch.Print();
160   return mgr;
161 }
162
163
164 void Merge(){
165   fstream finput;
166   TString currentFile("");
167   finput.open("mergelist.txt", ios_base::in);
168   TFileMerger merger;
169   merger.OutputFile("result.root");  
170   finput >> currentFile;
171   merger->AddFile(currentFile->Data());
172   merger.Merge();
173   TFile::Cp("result.root","last.root");
174   //
175   while(finput.good()) {
176     TFileMerger  merger2;
177     merger2.OutputFile("result.root");
178     finput >> currentFile;    
179     merger2.AddFile("last.root");
180     merger2.AddFile(currentFile->Data());    
181     merger2.Merge(); 
182     TFile::Cp("result.root","last.root");
183   }
184 }