/****************************************************************************
* This macro is used to create a DataBase for the TPC tracking *
* parameterization. *
* 1) the function CreateAllGeantTracks gives all tracks at the 1st hit of *
* the TPC *
* 2) the function TrackCompare compares them with track found by the *
* Kalman filter for the same event and computes efficiency and *
* resolution on the track parameters for the Kalman filter. *
* 3) the function BuildDataBase calls many functions of AliTPCtrackerParam:*
* - merge results from TrackCompare for many events and compute *
* average efficiency. *
* - analyze the pulls of the covariance matrix *
* - analyze the dE/dx *
* - regularize the covariance matrix as a function of the momentum *
* - write all the informations and the trees with regularized cov. *
* matrices in the DataBase file. *
* *
* Origin: A.Dainese, Padova, andrea.dainese@pd,infn.it *
* *
****************************************************************************/
#ifndef __CINT__
#include "Riostream.h"
#include <TFile.h>
#include <TTree.h>
#include <TStopwatch.h>
#include <TObject.h>
#include "alles.h"
#include "AliRun.h"
#include "AliHeader.h"
#include "AliGenEventHeader.h"
#include "AliMagF.h"
#include "AliModule.h"
#include "AliArrayI.h"
#include "AliDigits.h"
#include "AliITS.h"
#include "AliTPC.h"
#include "AliITSgeom.h"
#include "AliITSRecPoint.h"
#include "AliITSclusterV2.h"
#include "AliITSsimulationFastPoints.h"
#include "AliITStrackerV2.h"
#include "AliKalmanTrack.h"
#include "AliTPCtrackerParam.h"
#include "AliTracker.h"
#include "AliESD.h"
#include "AliRun.h"
#include "AliRunLoader.h"
#endif
Int_t TPCParamTracks(const Int_t coll=1,Int_t firstEvent=0,Int_t lastEvent=0);
void CreateAllGeantTracks(const Int_t coll=1,Int_t nev=1);
void TrackCompare(const Int_t coll,const Double_t Bfield,Int_t n);
void BuildDataBase(const Int_t coll,const Double_t Bfield);
//_____________________________________________________________________________
Int_t TPCParamTracks(const Int_t coll,Int_t firstEvent,Int_t lastEvent) {
//
// Ordinary TPC tracking parameterization
//
/**** Initialization of the NewIO *******/
if (gAlice) {
delete AliRunLoader::Instance();
delete gAlice;
gAlice=0;
}
AliRunLoader *rl = AliRunLoader::Open("galice.root");
if (rl == 0x0) {
cerr<<"Can not open session"<<endl;
return;
}
Int_t retval = rl->LoadgAlice();
if (retval) {
cerr<<"LoadgAlice returned error"<<endl;
delete rl;
return;
}
retval = rl->LoadHeader();
if (retval) {
cerr<<"LoadHeader returned error"<<endl;
delete rl;
return;
}
gAlice=rl->GetAliRun();
TDatabasePDG *DataBase = TDatabasePDG::Instance();
// Get field from galice.root
AliMagF *fiel = TGeoGlobalMagField::Instance()->GetField();
Double_t fieval=TMath::Abs((Double_t)fiel->SolenoidField()/10.);
/**** The TPC corner ********************/
AliTPCtrackerParam tpcTrackerPar(coll,fieval);
tpcTrackerPar.Init();
/***** The TREE is born *****/
TTree *esdTree=new TTree("esdTree","Tree with ESD objects");
AliESD *event=0;
esdTree->Branch("ESD","AliESD",&event);
if(firstEvent>rl->GetNumberOfEvents()) firstEvent=rl->GetNumberOfEvents()-1;
if(lastEvent>rl->GetNumberOfEvents()) lastEvent=rl->GetNumberOfEvents()-1;
cout<<" Number of events: "<<1+lastEvent-firstEvent<<endl;
//<----------------------------------The Loop over events begins
TStopwatch timer;
Int_t trc;
for(Int_t i=firstEvent; i<=lastEvent; i++) {
cerr<<" Processing event number : "<<i<<endl;
AliESD *event = new AliESD();
event->SetRunNumber(gAlice->GetRunNumber());
event->SetEventNumber(i);
event->SetMagneticField(gAlice->Field()->SolenoidField());
rl->GetEvent(i);
if ( (trc=tpcTrackerPar.BuildTPCtracks(event)) ) {
printf("exiting tracker with code %d in event %d\n",trc,i);
esdTree->Fill(); delete event;
continue;
}
esdTree->Fill();
delete event;
}//<-----------------------------------The Loop over events ends here
timer.Stop(); timer.Print();
// The AliESDs.root is born
TFile *ef = TFile::Open("AliESDs.root","RECREATE");
if (!ef || !ef->IsOpen()) {cerr<<"Can't open AliESDs.root !\n"; return;}
esdTree->Write(); //Write the TREE and close everything
delete esdTree;
ef->Close();
delete rl;
return;
}
//_____________________________________________________________________________
void CreateAllGeantTracks(const Int_t coll,Int_t nev) {
//
// Get all tracks at TPC 1st hit w/o selection and smearing
//
cerr<<"\n*******************************************************************\n";
const Char_t *name="CreateAllGeantTracks";
cerr<<'\n'<<name<<"...\n";
gBenchmark->Start(name);
TFile *outfile=TFile::Open(outname,"recreate");
TFile *infile =TFile::Open(galice);
AliTPCtrackerParam tracker(coll,Bfield,n);
tracker.AllGeantTracks(); // this is to switch-off selection and smearing
tracker.BuildTPCtracks(infile,outfile);
delete gAlice; gAlice=0;
infile->Close();
outfile->Close();
gBenchmark->Stop(name);
gBenchmark->Show(name);
return;
}
//_____________________________________________________________________________
void TrackCompare(const Int_t coll,const Double_t Bfield,Int_t n) {
//
// Compare Kalman tracks with tracks at TPC 1st hit
//
cerr<<"\n*******************************************************************\n";
const Char_t *name="TrackCompare";
cerr<<'\n'<<name<<"...\n";
gBenchmark->Start(name);
AliTPCtrackerParam tracker(coll,Bfield,n);
tracker.CompareTPCtracks();
gBenchmark->Stop(name);
gBenchmark->Show(name);
return;
}
//_____________________________________________________________________________
void BuildDataBase(const Int_t coll,const Double_t Bfield) {
//
//
//
cerr<<"\n*******************************************************************\n";
AliTPCtrackerParam tracker(coll,Bfield);
// Merge files with cov. matrix and compute average efficiencies
cerr<<"\n --- Merging Events ---\n\n";
tracker.MergeEvents(1,5);
// Compute the pulls for pions, kaons, electrons
cerr<<"\n --- Analyzing Pulls ---\n\n";
tracker.AnalyzePulls("pulls.root");
// Draw pulls and efficiencies
tracker.DrawPulls("CovMatrixDB_PbPb6000_B0.4T.root",211,0);
tracker.DrawEffs("CovMatrixDB_PbPb6000_B0.4T.root",13);
// Regularize the covariance matrix
tracker.RegularizeCovMatrix("regPi.root",211);
// Analyze the dE/dx
tracker.AnalyzedEdx("dEdxPi.root",211);
// Put everything together and create the DB file
tracker.MakeDataBase();
return;
}
AliTPCtrackingParamDB.C:1 AliTPCtrackingParamDB.C:2 AliTPCtrackingParamDB.C:3 AliTPCtrackingParamDB.C:4 AliTPCtrackingParamDB.C:5 AliTPCtrackingParamDB.C:6 AliTPCtrackingParamDB.C:7 AliTPCtrackingParamDB.C:8 AliTPCtrackingParamDB.C:9 AliTPCtrackingParamDB.C:10 AliTPCtrackingParamDB.C:11 AliTPCtrackingParamDB.C:12 AliTPCtrackingParamDB.C:13 AliTPCtrackingParamDB.C:14 AliTPCtrackingParamDB.C:15 AliTPCtrackingParamDB.C:16 AliTPCtrackingParamDB.C:17 AliTPCtrackingParamDB.C:18 AliTPCtrackingParamDB.C:19 AliTPCtrackingParamDB.C:20 AliTPCtrackingParamDB.C:21 AliTPCtrackingParamDB.C:22 AliTPCtrackingParamDB.C:23 AliTPCtrackingParamDB.C:24 AliTPCtrackingParamDB.C:25 AliTPCtrackingParamDB.C:26 AliTPCtrackingParamDB.C:27 AliTPCtrackingParamDB.C:28 AliTPCtrackingParamDB.C:29 AliTPCtrackingParamDB.C:30 AliTPCtrackingParamDB.C:31 AliTPCtrackingParamDB.C:32 AliTPCtrackingParamDB.C:33 AliTPCtrackingParamDB.C:34 AliTPCtrackingParamDB.C:35 AliTPCtrackingParamDB.C:36 AliTPCtrackingParamDB.C:37 AliTPCtrackingParamDB.C:38 AliTPCtrackingParamDB.C:39 AliTPCtrackingParamDB.C:40 AliTPCtrackingParamDB.C:41 AliTPCtrackingParamDB.C:42 AliTPCtrackingParamDB.C:43 AliTPCtrackingParamDB.C:44 AliTPCtrackingParamDB.C:45 AliTPCtrackingParamDB.C:46 AliTPCtrackingParamDB.C:47 AliTPCtrackingParamDB.C:48 AliTPCtrackingParamDB.C:49 AliTPCtrackingParamDB.C:50 AliTPCtrackingParamDB.C:51 AliTPCtrackingParamDB.C:52 AliTPCtrackingParamDB.C:53 AliTPCtrackingParamDB.C:54 AliTPCtrackingParamDB.C:55 AliTPCtrackingParamDB.C:56 AliTPCtrackingParamDB.C:57 AliTPCtrackingParamDB.C:58 AliTPCtrackingParamDB.C:59 AliTPCtrackingParamDB.C:60 AliTPCtrackingParamDB.C:61 AliTPCtrackingParamDB.C:62 AliTPCtrackingParamDB.C:63 AliTPCtrackingParamDB.C:64 AliTPCtrackingParamDB.C:65 AliTPCtrackingParamDB.C:66 AliTPCtrackingParamDB.C:67 AliTPCtrackingParamDB.C:68 AliTPCtrackingParamDB.C:69 AliTPCtrackingParamDB.C:70 AliTPCtrackingParamDB.C:71 AliTPCtrackingParamDB.C:72 AliTPCtrackingParamDB.C:73 AliTPCtrackingParamDB.C:74 AliTPCtrackingParamDB.C:75 AliTPCtrackingParamDB.C:76 AliTPCtrackingParamDB.C:77 AliTPCtrackingParamDB.C:78 AliTPCtrackingParamDB.C:79 AliTPCtrackingParamDB.C:80 AliTPCtrackingParamDB.C:81 AliTPCtrackingParamDB.C:82 AliTPCtrackingParamDB.C:83 AliTPCtrackingParamDB.C:84 AliTPCtrackingParamDB.C:85 AliTPCtrackingParamDB.C:86 AliTPCtrackingParamDB.C:87 AliTPCtrackingParamDB.C:88 AliTPCtrackingParamDB.C:89 AliTPCtrackingParamDB.C:90 AliTPCtrackingParamDB.C:91 AliTPCtrackingParamDB.C:92 AliTPCtrackingParamDB.C:93 AliTPCtrackingParamDB.C:94 AliTPCtrackingParamDB.C:95 AliTPCtrackingParamDB.C:96 AliTPCtrackingParamDB.C:97 AliTPCtrackingParamDB.C:98 AliTPCtrackingParamDB.C:99 AliTPCtrackingParamDB.C:100 AliTPCtrackingParamDB.C:101 AliTPCtrackingParamDB.C:102 AliTPCtrackingParamDB.C:103 AliTPCtrackingParamDB.C:104 AliTPCtrackingParamDB.C:105 AliTPCtrackingParamDB.C:106 AliTPCtrackingParamDB.C:107 AliTPCtrackingParamDB.C:108 AliTPCtrackingParamDB.C:109 AliTPCtrackingParamDB.C:110 AliTPCtrackingParamDB.C:111 AliTPCtrackingParamDB.C:112 AliTPCtrackingParamDB.C:113 AliTPCtrackingParamDB.C:114 AliTPCtrackingParamDB.C:115 AliTPCtrackingParamDB.C:116 AliTPCtrackingParamDB.C:117 AliTPCtrackingParamDB.C:118 AliTPCtrackingParamDB.C:119 AliTPCtrackingParamDB.C:120 AliTPCtrackingParamDB.C:121 AliTPCtrackingParamDB.C:122 AliTPCtrackingParamDB.C:123 AliTPCtrackingParamDB.C:124 AliTPCtrackingParamDB.C:125 AliTPCtrackingParamDB.C:126 AliTPCtrackingParamDB.C:127 AliTPCtrackingParamDB.C:128 AliTPCtrackingParamDB.C:129 AliTPCtrackingParamDB.C:130 AliTPCtrackingParamDB.C:131 AliTPCtrackingParamDB.C:132 AliTPCtrackingParamDB.C:133 AliTPCtrackingParamDB.C:134 AliTPCtrackingParamDB.C:135 AliTPCtrackingParamDB.C:136 AliTPCtrackingParamDB.C:137 AliTPCtrackingParamDB.C:138 AliTPCtrackingParamDB.C:139 AliTPCtrackingParamDB.C:140 AliTPCtrackingParamDB.C:141 AliTPCtrackingParamDB.C:142 AliTPCtrackingParamDB.C:143 AliTPCtrackingParamDB.C:144 AliTPCtrackingParamDB.C:145 AliTPCtrackingParamDB.C:146 AliTPCtrackingParamDB.C:147 AliTPCtrackingParamDB.C:148 AliTPCtrackingParamDB.C:149 AliTPCtrackingParamDB.C:150 AliTPCtrackingParamDB.C:151 AliTPCtrackingParamDB.C:152 AliTPCtrackingParamDB.C:153 AliTPCtrackingParamDB.C:154 AliTPCtrackingParamDB.C:155 AliTPCtrackingParamDB.C:156 AliTPCtrackingParamDB.C:157 AliTPCtrackingParamDB.C:158 AliTPCtrackingParamDB.C:159 AliTPCtrackingParamDB.C:160 AliTPCtrackingParamDB.C:161 AliTPCtrackingParamDB.C:162 AliTPCtrackingParamDB.C:163 AliTPCtrackingParamDB.C:164 AliTPCtrackingParamDB.C:165 AliTPCtrackingParamDB.C:166 AliTPCtrackingParamDB.C:167 AliTPCtrackingParamDB.C:168 AliTPCtrackingParamDB.C:169 AliTPCtrackingParamDB.C:170 AliTPCtrackingParamDB.C:171 AliTPCtrackingParamDB.C:172 AliTPCtrackingParamDB.C:173 AliTPCtrackingParamDB.C:174 AliTPCtrackingParamDB.C:175 AliTPCtrackingParamDB.C:176 AliTPCtrackingParamDB.C:177 AliTPCtrackingParamDB.C:178 AliTPCtrackingParamDB.C:179 AliTPCtrackingParamDB.C:180 AliTPCtrackingParamDB.C:181 AliTPCtrackingParamDB.C:182 AliTPCtrackingParamDB.C:183 AliTPCtrackingParamDB.C:184 AliTPCtrackingParamDB.C:185 AliTPCtrackingParamDB.C:186 AliTPCtrackingParamDB.C:187 AliTPCtrackingParamDB.C:188 AliTPCtrackingParamDB.C:189 AliTPCtrackingParamDB.C:190 AliTPCtrackingParamDB.C:191 AliTPCtrackingParamDB.C:192 AliTPCtrackingParamDB.C:193 AliTPCtrackingParamDB.C:194 AliTPCtrackingParamDB.C:195 AliTPCtrackingParamDB.C:196 AliTPCtrackingParamDB.C:197 AliTPCtrackingParamDB.C:198 AliTPCtrackingParamDB.C:199 AliTPCtrackingParamDB.C:200 AliTPCtrackingParamDB.C:201 AliTPCtrackingParamDB.C:202 AliTPCtrackingParamDB.C:203 AliTPCtrackingParamDB.C:204 AliTPCtrackingParamDB.C:205 AliTPCtrackingParamDB.C:206 AliTPCtrackingParamDB.C:207 AliTPCtrackingParamDB.C:208 AliTPCtrackingParamDB.C:209 AliTPCtrackingParamDB.C:210 AliTPCtrackingParamDB.C:211 AliTPCtrackingParamDB.C:212 AliTPCtrackingParamDB.C:213 AliTPCtrackingParamDB.C:214 AliTPCtrackingParamDB.C:215 AliTPCtrackingParamDB.C:216 AliTPCtrackingParamDB.C:217 AliTPCtrackingParamDB.C:218 AliTPCtrackingParamDB.C:219 AliTPCtrackingParamDB.C:220 AliTPCtrackingParamDB.C:221 AliTPCtrackingParamDB.C:222 AliTPCtrackingParamDB.C:223 AliTPCtrackingParamDB.C:224 AliTPCtrackingParamDB.C:225 AliTPCtrackingParamDB.C:226 AliTPCtrackingParamDB.C:227 AliTPCtrackingParamDB.C:228 AliTPCtrackingParamDB.C:229 AliTPCtrackingParamDB.C:230 AliTPCtrackingParamDB.C:231 AliTPCtrackingParamDB.C:232 AliTPCtrackingParamDB.C:233 AliTPCtrackingParamDB.C:234