{ // Use non default gconfig and geometry directories TString dir = getenv("VMCWORKDIR"); TString tutdir = dir + "/macro/torinoDetector"; TString tut_geomdir = tutdir + "/geometry"; gSystem->Setenv("GEOMPATH",tut_geomdir.Data()); TString tut_configdir = tutdir + "/gconfig"; gSystem->Setenv("CONFIG_DIR",tut_configdir.Data()); TString rootLogonFile = tut_configdir + "/rootlogon.C"; // Load basic libraries gROOT->LoadMacro(rootLogonFile); rootlogon(); gSystem->Load("libPndTorinoDetector.so"); // ........................................................... TFile filereco("data/testreco.root"); TTree *treereco = (TTree*) filereco.Get("cbmsim"); TClonesArray *pretrkarray = new TClonesArray("PndTrack"); treereco->SetBranchAddress("PndTorinoDetectorTrack",&pretrkarray); TClonesArray *pretrkIDarray = new TClonesArray("PndTrackID"); treereco->SetBranchAddress("PndTorinoDetectorTrackID",&pretrkIDarray); TClonesArray *kaltrkarray = new TClonesArray("PndTrack"); treereco->SetBranchAddress("PndTorinoDetectorKalmanTrack",&kaltrkarray); TClonesArray *kaltrkIDarray = new TClonesArray("PndTrackID"); treereco->SetBranchAddress("PndTorinoDetectorKalmanTrackID",&kaltrkIDarray); TH1F *hpremom = new TH1F("hpremom", "prefit mom distr", 100, 1, 3); TH1F *hkalmom = new TH1F("hkalmom", "kalman mom distr", 100, 1, 3); TH1F *hres = new TH1F("hres", "resolution", 100, -1, 1); TH1F *hkalflag = new TH1F("hkalflag", "flag", 10, -4.5, 5.5); TH2F *hkalflagvstrackid = new TH2F("hkalflagvstrackid", "flag vs trackid", 10, -4.5, 5.5, 9, -0.5, 8.5); TH1F *hnofhits = new TH1F("hnofhits", "NofHits", 9, -0.5, 8.5); PndTrack *pretrk, *kaltrk; PndTrackID *pretrkID, *kaltrkID; for(int ievt = 0; ievt < treereco->GetEntriesFast(); ievt++) { treereco->GetEntry(ievt); // prefit for(int itrk = 0; itrk < kaltrkarray->GetEntries(); itrk++) { kaltrk = (PndTrack*) kaltrkarray->At(itrk); kaltrkID = (PndTrackID*) kaltrkIDarray->At(itrk); Int_t refindex = kaltrk->GetRefIndex(); if(refindex == -1) cout << "no prefit track for this kalman track??" << endl; pretrk = (PndTrack*) pretrkarray->At(refindex); pretrkID = (PndTrackID*) pretrkIDarray->At(refindex); hkalflag->Fill(kaltrk->GetFlag()); hkalflagvstrackid->Fill(kaltrk->GetFlag(), pretrkID->GetCorrTrackID()); if(kaltrk->GetFlag() < 0) continue; PndTrackCand kaltrkcand = kaltrk->GetTrackCand(); hnofhits->Fill(kaltrkcand.GetNHits()); FairTrackParP kalpar = kaltrk->GetParamFirst(); TVector3 kalmom = kalpar.GetMomentum(); hkalmom->Fill(kalmom.Mag()); FairTrackParP prepar = pretrk->GetParamFirst(); TVector3 premom = prepar.GetMomentum(); hpremom->Fill(premom.Mag()); hres->Fill((kalmom.Mag() - premom.Mag())/premom.Mag()); } } hkalmom->Draw(); hpremom->SetFillColor(3); hpremom->SetFillStyle(3005); hpremom->Draw("SAME"); }