+ Int_t nBinsPi = fDBgridPi.GetTotBins();
+ for(Int_t l=0; l<nBinsPi; l++) {
+ str = "/CovMatrices/Pions/CovTreePi_bin";
+ str+=l;
+ fCovTreePi[l] = (TTree*)inFile->Get(str.Data());
+ //fCovTree = (TTree*)inFile->Get(str.Data());
+ //fCovTreePi[l] = new TTree(*fCovTree);
+ }
+ Int_t nBinsKa = fDBgridKa.GetTotBins();
+ for(Int_t l=0; l<nBinsKa; l++) {
+ str = "/CovMatrices/Kaons/CovTreeKa_bin";
+ str+=l;
+ fCovTreeKa[l] = (TTree*)inFile->Get(str.Data());
+ //fCovTree = (TTree*)inFile->Get(str.Data());
+ //fCovTreeKa[l] = new TTree(*fCovTree);
+ }
+ Int_t nBinsPr = fDBgridPr.GetTotBins();
+ for(Int_t l=0; l<nBinsPr; l++) {
+ if(fColl==0) {
+ str = "/CovMatrices/Pions/CovTreePi_bin";
+ } else {
+ str = "/CovMatrices/Protons/CovTreePr_bin";
+ }
+ str+=l;
+ fCovTreePr[l] = (TTree*)inFile->Get(str.Data());
+ //fCovTree = (TTree*)inFile->Get(str.Data());
+ //fCovTreePr[l] = new TTree(*fCovTree);
+ }
+ Int_t nBinsEl = fDBgridEl.GetTotBins();
+ for(Int_t l=0; l<nBinsEl; l++) {
+ str = "/CovMatrices/Electrons/CovTreeEl_bin";
+ str+=l;
+ fCovTreeEl[l] = (TTree*)inFile->Get(str.Data());
+ //fCovTree = (TTree*)inFile->Get(str.Data());
+ //fCovTreeEl[l] = new TTree(*fCovTree);
+ }
+ Int_t nBinsMu = fDBgridMu.GetTotBins();
+ for(Int_t l=0; l<nBinsMu; l++) {
+ if(fColl==0) {
+ str = "/CovMatrices/Pions/CovTreePi_bin";
+ } else {
+ str = "/CovMatrices/Muons/CovTreeMu_bin";
+ }
+ str+=l;
+ fCovTreeMu[l] = (TTree*)inFile->Get(str.Data());
+ //fCovTree = (TTree*)inFile->Get(str.Data());
+ //fCovTreeMu[l] = new TTree(*fCovTree);
+ }
+
+ //inFile->Close();
+
+ return 1;
+}
+//-----------------------------------------------------------------------------
+Int_t AliTPCtrackerParam::ReaddEdx(const Char_t* inName,Int_t pdg) {
+//-----------------------------------------------------------------------------
+// This function reads the dEdx parameters from the DB
+//-----------------------------------------------------------------------------
+
+ if(gSystem->AccessPathName(inName,kFileExists)) {
+ cerr<<"AliTPCtrackerParam::ReaddEdx: "<<inName<<" not found\n";
+ return 0; }
+
+ TFile *inFile = TFile::Open(inName);
+ switch (pdg) {
+ case 211:
+ fdEdxMean = (AliTPCkineGrid*)inFile->Get("/dEdx/Pions/dEdxMeanPi");
+ fdEdxMeanPi.~AliTPCkineGrid();
+ new(&fdEdxMeanPi) AliTPCkineGrid(*fdEdxMean);
+ fdEdxRMS = (AliTPCkineGrid*)inFile->Get("/dEdx/Pions/dEdxRMSPi");
+ fdEdxRMSPi.~AliTPCkineGrid();
+ new(&fdEdxRMSPi) AliTPCkineGrid(*fdEdxRMS);
+ break;
+ case 321:
+ fdEdxMean = (AliTPCkineGrid*)inFile->Get("/dEdx/Kaons/dEdxMeanKa");
+ fdEdxMeanKa.~AliTPCkineGrid();
+ new(&fdEdxMeanKa) AliTPCkineGrid(*fdEdxMean);
+ fdEdxRMS = (AliTPCkineGrid*)inFile->Get("/dEdx/Kaons/dEdxRMSKa");
+ fdEdxRMSKa.~AliTPCkineGrid();
+ new(&fdEdxRMSKa) AliTPCkineGrid(*fdEdxRMS);
+ break;
+ case 2212:
+ fdEdxMean = (AliTPCkineGrid*)inFile->Get("/dEdx/Protons/dEdxMeanPr");
+ fdEdxMeanPr.~AliTPCkineGrid();
+ new(&fdEdxMeanPr) AliTPCkineGrid(*fdEdxMean);
+ fdEdxRMS = (AliTPCkineGrid*)inFile->Get("/dEdx/Protons/dEdxRMSPr");
+ fdEdxRMSPr.~AliTPCkineGrid();
+ new(&fdEdxRMSPr) AliTPCkineGrid(*fdEdxRMS);
+ break;
+ case 11:
+ fdEdxMean = (AliTPCkineGrid*)inFile->Get("/dEdx/Electrons/dEdxMeanEl");
+ fdEdxMeanEl.~AliTPCkineGrid();
+ new(&fdEdxMeanEl) AliTPCkineGrid(*fdEdxMean);
+ fdEdxRMS = (AliTPCkineGrid*)inFile->Get("/dEdx/Electrons/dEdxRMSEl");
+ fdEdxRMSEl.~AliTPCkineGrid();
+ new(&fdEdxRMSEl) AliTPCkineGrid(*fdEdxRMS);
+ break;
+ case 13:
+ if(fColl==0) {
+ fdEdxMean = (AliTPCkineGrid*)inFile->Get("/dEdx/Pions/dEdxMeanPi");
+ fdEdxRMS = (AliTPCkineGrid*)inFile->Get("/dEdx/Pions/dEdxRMSPi");
+ } else {
+ fdEdxMean = (AliTPCkineGrid*)inFile->Get("/dEdx/Muons/dEdxMeanMu");
+ fdEdxRMS = (AliTPCkineGrid*)inFile->Get("/dEdx/Muons/dEdxRMSMu");
+ }
+ fdEdxMeanMu.~AliTPCkineGrid();
+ new(&fdEdxMeanMu) AliTPCkineGrid(*fdEdxMean);
+ fdEdxRMSMu.~AliTPCkineGrid();
+ new(&fdEdxRMSMu) AliTPCkineGrid(*fdEdxRMS);
+ break;
+ }
+ inFile->Close();
+
+ return 1;
+}
+//-----------------------------------------------------------------------------
+Int_t AliTPCtrackerParam::ReadDBgrid(const Char_t* inName) {
+//-----------------------------------------------------------------------------
+// This function reads the kine grid from the DB
+//-----------------------------------------------------------------------------
+
+ if(gSystem->AccessPathName(inName,kFileExists)) {
+ cerr<<"AliTPCtrackerParam::ReadCovMatrices: "<<inName<<" not found\n";
+ return 0; }
+
+ TFile *inFile = TFile::Open(inName);
+
+ // first read the DB grid for the different particles
+ fDBgrid = (AliTPCkineGrid*)inFile->Get("/CovMatrices/Pions/DBgridPi");
+ fDBgridPi.~AliTPCkineGrid();
+ new(&fDBgridPi) AliTPCkineGrid(*fDBgrid);
+ fDBgrid = (AliTPCkineGrid*)inFile->Get("/CovMatrices/Kaons/DBgridKa");
+ fDBgridKa.~AliTPCkineGrid();
+ new(&fDBgridKa) AliTPCkineGrid(*fDBgrid);
+ if(fColl==0) {
+ fDBgrid = (AliTPCkineGrid*)inFile->Get("/CovMatrices/Pions/DBgridPi");
+ } else {
+ fDBgrid = (AliTPCkineGrid*)inFile->Get("/CovMatrices/Protons/DBgridPr");
+ }
+ fDBgridPr.~AliTPCkineGrid();
+ new(&fDBgridPr) AliTPCkineGrid(*fDBgrid);
+ fDBgrid = (AliTPCkineGrid*)inFile->Get("/CovMatrices/Electrons/DBgridEl");
+ fDBgridEl.~AliTPCkineGrid();
+ new(&fDBgridEl) AliTPCkineGrid(*fDBgrid);
+ if(fColl==0) {
+ fDBgrid = (AliTPCkineGrid*)inFile->Get("/CovMatrices/Pions/DBgridPi");
+ } else {
+ fDBgrid = (AliTPCkineGrid*)inFile->Get("/CovMatrices/Muons/DBgridMu");
+ }
+ fDBgridMu.~AliTPCkineGrid();
+ new(&fDBgridMu) AliTPCkineGrid(*fDBgrid);
+
+ inFile->Close();
+
+ return 1;
+}
+//-----------------------------------------------------------------------------
+Int_t AliTPCtrackerParam::ReadEffs(const Char_t* inName) {
+//-----------------------------------------------------------------------------
+// This function reads the TPC efficiencies from the DB
+//-----------------------------------------------------------------------------
+
+ if(gSystem->AccessPathName(inName,kFileExists)) {
+ cerr<<"AliTPCtrackerParam::ReadEffs: "<<inName<<" not found\n";
+ return 0; }
+
+ TFile *inFile = TFile::Open(inName);
+
+ fEff = (AliTPCkineGrid*)inFile->Get("/Efficiencies/Pions/EffPi");
+ fEffPi.~AliTPCkineGrid();
+ new(&fEffPi) AliTPCkineGrid(*fEff);
+ fEff = (AliTPCkineGrid*)inFile->Get("/Efficiencies/Kaons/EffKa");
+ fEffKa.~AliTPCkineGrid();
+ new(&fEffKa) AliTPCkineGrid(*fEff);
+ fEff = (AliTPCkineGrid*)inFile->Get("/Efficiencies/Protons/EffPr");
+ fEffPr.~AliTPCkineGrid();
+ new(&fEffPr) AliTPCkineGrid(*fEff);
+ fEff = (AliTPCkineGrid*)inFile->Get("/Efficiencies/Electrons/EffEl");
+ fEffEl.~AliTPCkineGrid();
+ new(&fEffEl) AliTPCkineGrid(*fEff);
+ fEff = (AliTPCkineGrid*)inFile->Get("/Efficiencies/Muons/EffMu");
+ fEffMu.~AliTPCkineGrid();
+ new(&fEffMu) AliTPCkineGrid(*fEff);
+
+ inFile->Close();
+
+ return 1;
+}
+//-----------------------------------------------------------------------------
+Int_t AliTPCtrackerParam::ReadPulls(const Char_t* inName) {
+//-----------------------------------------------------------------------------
+// This function reads the pulls from the DB
+//-----------------------------------------------------------------------------
+
+ if(gSystem->AccessPathName(inName,kFileExists)) {
+ cerr<<"AliTPCtrackerParam::ReadPulls: "<<inName<<" not found\n";
+ return 0; }
+
+ TFile *inFile = TFile::Open(inName);
+
+ for(Int_t i=0; i<5; i++) {
+ TString pi("/Pulls/Pions/PullsPi_"); pi+=i;
+ TString ka("/Pulls/Kaons/PullsKa_"); ka+=i;
+ TString pr("/Pulls/Protons/PullsPr_"); pr+=i;
+ TString el("/Pulls/Electrons/PullsEl_"); el+=i;
+ TString mu("/Pulls/Muons/PullsMu_"); mu+=i;
+
+ fPulls = (AliTPCkineGrid*)inFile->Get(pi.Data());
+ fPullsPi[i].~AliTPCkineGrid();
+ new(&fPullsPi[i]) AliTPCkineGrid(*fPulls);
+
+ fPulls = (AliTPCkineGrid*)inFile->Get(ka.Data());
+ fPullsKa[i].~AliTPCkineGrid();
+ new(&fPullsKa[i]) AliTPCkineGrid(*fPulls);
+
+ if(fColl==0) {
+ fPulls = (AliTPCkineGrid*)inFile->Get(pi.Data());
+ } else {
+ fPulls = (AliTPCkineGrid*)inFile->Get(pr.Data());
+ }
+ fPullsPr[i].~AliTPCkineGrid();
+ new(&fPullsPr[i]) AliTPCkineGrid(*fPulls);
+
+ fPulls = (AliTPCkineGrid*)inFile->Get(el.Data());
+ fPullsEl[i].~AliTPCkineGrid();
+ new(&fPullsEl[i]) AliTPCkineGrid(*fPulls);
+
+ if(fColl==0) {
+ fPulls = (AliTPCkineGrid*)inFile->Get(pi.Data());
+ } else {
+ fPulls = (AliTPCkineGrid*)inFile->Get(mu.Data());
+ }
+ fPullsMu[i].~AliTPCkineGrid();
+ new(&fPullsMu[i]) AliTPCkineGrid(*fPulls);
+ }
+
+ inFile->Close();
+
+ return 1;
+}
+//-----------------------------------------------------------------------------
+Int_t AliTPCtrackerParam::ReadRegParams(const Char_t* inName,Int_t pdg) {
+//-----------------------------------------------------------------------------
+// This function reads the regularization parameters from the DB
+//-----------------------------------------------------------------------------
+
+ if(gSystem->AccessPathName(inName,kFileExists)) {
+ cerr<<"AliTPCtrackerParam::ReadRegParams: "<<inName<<" not found\n";
+ return 0; }
+ // Introduced change to "reverse" the TMatrixD read from file.
+ // Needed because storage mode of TMatrixD changed from column-wise
+ // to rwo-wise in ROOT.
+ //
+ // A.Dainese 03/06/05
+
+ TMatrixD dummyMatrix(9,3);
+
+ TFile *inFile = TFile::Open(inName);
+ switch (pdg) {
+ case 211:
+ fRegPar = (TMatrixD*)inFile->Get("/RegParams/Pions/RegPions");
+ new(&fRegParPi) TMatrixD(*fRegPar);
+ //printf("before\n");
+ //for(Int_t jj=0;jj<9;jj++) printf("%13.10f %13.10f %13.10f\n",fRegParPi(jj,0),fRegParPi(jj,1),fRegParPi(jj,2));
+ dummyMatrix = fRegParPi;
+ fRegParPi(0,0) = dummyMatrix(0,0);
+ fRegParPi(0,1) = dummyMatrix(0,1);
+ fRegParPi(0,2) = dummyMatrix(0,2);
+ fRegParPi(1,0) = dummyMatrix(3,0);
+ fRegParPi(1,1) = dummyMatrix(1,1);
+ fRegParPi(1,2) = dummyMatrix(1,2);
+ fRegParPi(2,0) = dummyMatrix(6,0);
+ fRegParPi(2,1) = dummyMatrix(3,2);
+ fRegParPi(2,2) = dummyMatrix(2,2);
+ fRegParPi(3,0) = dummyMatrix(1,0);
+ fRegParPi(3,1) = dummyMatrix(4,0);
+ fRegParPi(3,2) = dummyMatrix(7,0);
+ fRegParPi(4,0) = dummyMatrix(3,1);
+ fRegParPi(4,1) = dummyMatrix(4,1);
+ fRegParPi(4,2) = dummyMatrix(7,1);
+ fRegParPi(5,0) = dummyMatrix(6,1);
+ fRegParPi(5,1) = dummyMatrix(4,2);
+ fRegParPi(5,2) = dummyMatrix(7,2);
+ fRegParPi(6,0) = dummyMatrix(2,0);
+ fRegParPi(6,1) = dummyMatrix(5,0);
+ fRegParPi(6,2) = dummyMatrix(8,0);
+ fRegParPi(7,0) = dummyMatrix(2,1);
+ fRegParPi(7,1) = dummyMatrix(5,1);
+ fRegParPi(7,2) = dummyMatrix(8,1);
+ fRegParPi(8,0) = dummyMatrix(6,2);
+ fRegParPi(8,1) = dummyMatrix(5,2);
+ fRegParPi(8,2) = dummyMatrix(8,2);
+ //printf("after\n");
+ //for(Int_t jj=0;jj<9;jj++) printf("%13.10f %13.10f %13.10f\n",fRegParPi(jj,0),fRegParPi(jj,1),fRegParPi(jj,2));
+ break;
+ case 321:
+ fRegPar = (TMatrixD*)inFile->Get("/RegParams/Kaons/RegKaons");
+ new(&fRegParKa) TMatrixD(*fRegPar);
+ dummyMatrix = fRegParKa;
+ fRegParKa(0,0) = dummyMatrix(0,0);
+ fRegParKa(0,1) = dummyMatrix(0,1);
+ fRegParKa(0,2) = dummyMatrix(0,2);
+ fRegParKa(1,0) = dummyMatrix(3,0);
+ fRegParKa(1,1) = dummyMatrix(1,1);
+ fRegParKa(1,2) = dummyMatrix(1,2);
+ fRegParKa(2,0) = dummyMatrix(6,0);
+ fRegParKa(2,1) = dummyMatrix(3,2);
+ fRegParKa(2,2) = dummyMatrix(2,2);
+ fRegParKa(3,0) = dummyMatrix(1,0);
+ fRegParKa(3,1) = dummyMatrix(4,0);
+ fRegParKa(3,2) = dummyMatrix(7,0);
+ fRegParKa(4,0) = dummyMatrix(3,1);
+ fRegParKa(4,1) = dummyMatrix(4,1);
+ fRegParKa(4,2) = dummyMatrix(7,1);
+ fRegParKa(5,0) = dummyMatrix(6,1);
+ fRegParKa(5,1) = dummyMatrix(4,2);
+ fRegParKa(5,2) = dummyMatrix(7,2);
+ fRegParKa(6,0) = dummyMatrix(2,0);
+ fRegParKa(6,1) = dummyMatrix(5,0);
+ fRegParKa(6,2) = dummyMatrix(8,0);
+ fRegParKa(7,0) = dummyMatrix(2,1);
+ fRegParKa(7,1) = dummyMatrix(5,1);
+ fRegParKa(7,2) = dummyMatrix(8,1);
+ fRegParKa(8,0) = dummyMatrix(6,2);
+ fRegParKa(8,1) = dummyMatrix(5,2);
+ fRegParKa(8,2) = dummyMatrix(8,2);
+ break;
+ case 2212:
+ if(fColl==0) {
+ fRegPar = (TMatrixD*)inFile->Get("/RegParams/Pions/RegPions");
+ } else {
+ fRegPar = (TMatrixD*)inFile->Get("/RegParams/Protons/RegProtons");
+ }
+ new(&fRegParPr) TMatrixD(*fRegPar);
+ dummyMatrix = fRegParPr;
+ fRegParPr(0,0) = dummyMatrix(0,0);
+ fRegParPr(0,1) = dummyMatrix(0,1);
+ fRegParPr(0,2) = dummyMatrix(0,2);
+ fRegParPr(1,0) = dummyMatrix(3,0);
+ fRegParPr(1,1) = dummyMatrix(1,1);
+ fRegParPr(1,2) = dummyMatrix(1,2);
+ fRegParPr(2,0) = dummyMatrix(6,0);
+ fRegParPr(2,1) = dummyMatrix(3,2);
+ fRegParPr(2,2) = dummyMatrix(2,2);
+ fRegParPr(3,0) = dummyMatrix(1,0);
+ fRegParPr(3,1) = dummyMatrix(4,0);
+ fRegParPr(3,2) = dummyMatrix(7,0);
+ fRegParPr(4,0) = dummyMatrix(3,1);
+ fRegParPr(4,1) = dummyMatrix(4,1);
+ fRegParPr(4,2) = dummyMatrix(7,1);
+ fRegParPr(5,0) = dummyMatrix(6,1);
+ fRegParPr(5,1) = dummyMatrix(4,2);
+ fRegParPr(5,2) = dummyMatrix(7,2);
+ fRegParPr(6,0) = dummyMatrix(2,0);
+ fRegParPr(6,1) = dummyMatrix(5,0);
+ fRegParPr(6,2) = dummyMatrix(8,0);
+ fRegParPr(7,0) = dummyMatrix(2,1);
+ fRegParPr(7,1) = dummyMatrix(5,1);
+ fRegParPr(7,2) = dummyMatrix(8,1);
+ fRegParPr(8,0) = dummyMatrix(6,2);
+ fRegParPr(8,1) = dummyMatrix(5,2);
+ fRegParPr(8,2) = dummyMatrix(8,2);
+ break;
+ case 11:
+ fRegPar = (TMatrixD*)inFile->Get("/RegParams/Electrons/RegElectrons");
+ new(&fRegParEl) TMatrixD(*fRegPar);
+ dummyMatrix = fRegParEl;
+ fRegParEl(0,0) = dummyMatrix(0,0);
+ fRegParEl(0,1) = dummyMatrix(0,1);
+ fRegParEl(0,2) = dummyMatrix(0,2);
+ fRegParEl(1,0) = dummyMatrix(3,0);
+ fRegParEl(1,1) = dummyMatrix(1,1);
+ fRegParEl(1,2) = dummyMatrix(1,2);
+ fRegParEl(2,0) = dummyMatrix(6,0);
+ fRegParEl(2,1) = dummyMatrix(3,2);
+ fRegParEl(2,2) = dummyMatrix(2,2);
+ fRegParEl(3,0) = dummyMatrix(1,0);
+ fRegParEl(3,1) = dummyMatrix(4,0);
+ fRegParEl(3,2) = dummyMatrix(7,0);
+ fRegParEl(4,0) = dummyMatrix(3,1);
+ fRegParEl(4,1) = dummyMatrix(4,1);
+ fRegParEl(4,2) = dummyMatrix(7,1);
+ fRegParEl(5,0) = dummyMatrix(6,1);
+ fRegParEl(5,1) = dummyMatrix(4,2);
+ fRegParEl(5,2) = dummyMatrix(7,2);
+ fRegParEl(6,0) = dummyMatrix(2,0);
+ fRegParEl(6,1) = dummyMatrix(5,0);
+ fRegParEl(6,2) = dummyMatrix(8,0);
+ fRegParEl(7,0) = dummyMatrix(2,1);
+ fRegParEl(7,1) = dummyMatrix(5,1);
+ fRegParEl(7,2) = dummyMatrix(8,1);
+ fRegParEl(8,0) = dummyMatrix(6,2);
+ fRegParEl(8,1) = dummyMatrix(5,2);
+ fRegParEl(8,2) = dummyMatrix(8,2);
+ break;
+ case 13:
+ if(fColl==0) {
+ fRegPar = (TMatrixD*)inFile->Get("/RegParams/Pions/RegPions");
+ } else {
+ fRegPar = (TMatrixD*)inFile->Get("/RegParams/Muons/RegMuons");
+ }
+ new(&fRegParMu) TMatrixD(*fRegPar);
+ dummyMatrix = fRegParMu;
+ fRegParMu(0,0) = dummyMatrix(0,0);
+ fRegParMu(0,1) = dummyMatrix(0,1);
+ fRegParMu(0,2) = dummyMatrix(0,2);
+ fRegParMu(1,0) = dummyMatrix(3,0);
+ fRegParMu(1,1) = dummyMatrix(1,1);
+ fRegParMu(1,2) = dummyMatrix(1,2);
+ fRegParMu(2,0) = dummyMatrix(6,0);
+ fRegParMu(2,1) = dummyMatrix(3,2);
+ fRegParMu(2,2) = dummyMatrix(2,2);
+ fRegParMu(3,0) = dummyMatrix(1,0);
+ fRegParMu(3,1) = dummyMatrix(4,0);
+ fRegParMu(3,2) = dummyMatrix(7,0);
+ fRegParMu(4,0) = dummyMatrix(3,1);
+ fRegParMu(4,1) = dummyMatrix(4,1);
+ fRegParMu(4,2) = dummyMatrix(7,1);
+ fRegParMu(5,0) = dummyMatrix(6,1);
+ fRegParMu(5,1) = dummyMatrix(4,2);
+ fRegParMu(5,2) = dummyMatrix(7,2);
+ fRegParMu(6,0) = dummyMatrix(2,0);
+ fRegParMu(6,1) = dummyMatrix(5,0);
+ fRegParMu(6,2) = dummyMatrix(8,0);
+ fRegParMu(7,0) = dummyMatrix(2,1);
+ fRegParMu(7,1) = dummyMatrix(5,1);
+ fRegParMu(7,2) = dummyMatrix(8,1);
+ fRegParMu(8,0) = dummyMatrix(6,2);
+ fRegParMu(8,1) = dummyMatrix(5,2);
+ fRegParMu(8,2) = dummyMatrix(8,2);
+ break;
+ }
+ inFile->Close();
+
+ return 1;
+}
+//-----------------------------------------------------------------------------
+void AliTPCtrackerParam::RegularizeCovMatrix(const Char_t *outName,Int_t pdg) {
+//-----------------------------------------------------------------------------
+// This function regularizes the elements of the covariance matrix
+// that show a momentum depence:
+// c00, c11, c22, c33, c44, c20, c24, c40, c31
+// The regularization is done separately for pions, kaons, electrons:
+// give "Pion","Kaon" or "Electron" as first argument.
+//-----------------------------------------------------------------------------
+
+ gStyle->SetOptStat(0);
+ gStyle->SetOptFit(10001);
+
+ Int_t thisPdg=211;
+ const char *part="Pions - ";
+
+ InitializeKineGrid("DB");
+ SetParticle(pdg);
+ const Int_t kfitbins = fDBgrid->GetBinsPt();
+ cerr<<" Fit bins: "<<kfitbins<<endl;
+
+ switch (pdg) {
+ case 211: // pions
+ thisPdg=211;
+ part="Pions - ";
+ cerr<<" Processing pions ...\n";
+ break;
+ case 321: //kaons
+ thisPdg=321;
+ part="Kaons - ";
+ cerr<<" Processing kaons ...\n";
+ break;
+ case 2212: //protons
+ thisPdg=2212;
+ part="Protons - ";
+ cerr<<" Processing protons ...\n";
+ break;
+ case 11: // electrons
+ thisPdg= 11;
+ part="Electrons - ";
+ cerr<<" Processing electrons ...\n";
+ break;
+ case 13: // muons
+ thisPdg= 13;
+ part="Muons - ";
+ cerr<<" Processing muons ...\n";
+ break;
+ }
+
+
+ /*
+ // create a chain with compared tracks
+ TChain *cmptrkchain = new ("cmptrktree");
+ cmptrkchain.Add("CovMatrix_AllEvts.root");
+ //cmptrkchain.Add("CovMatrix_AllEvts_1.root");
+ //cmptrkchain.Add("CovMatrix_AllEvts_2.root");
+ //cmptrkchain.Add("CovMatrix_AllEvts_3.root");
+ */
+
+
+ TFile *infile = TFile::Open("CovMatrix_AllEvts.root");
+ TTree *cmptrktree = (TTree*)infile->Get("cmptrktree");
+
+ COMPTRACK cmptrk;
+ cmptrktree->SetBranchAddress("comptracks",&cmptrk);
+ Int_t entries = (Int_t)cmptrktree->GetEntries();