{ //Analysis for PndMvdPidTask Created by Tobias Baldauf August 2007 //Ralf Kliemt, Sep. 2007 // ----- Load libraries ------------------------------------------------ gROOT->LoadMacro("$VMCWORKDIR/gconfig/basiclibs.C"); basiclibs(); gSystem->Load("libGeoBase"); gSystem->Load("libParBase"); gSystem->Load("libBase"); gSystem->Load("libMCStack"); gSystem->Load("libField"); gSystem->Load("libGen"); gSystem->Load("libPassive"); gSystem->Load("libgenfit"); gSystem->Load("libtpc"); gSystem->Load("libtpcreco"); gSystem->Load("librecotasks"); gSystem->Load("libMvd"); gSystem->Load("libMvdReco"); // ----- Timer -------------------------------------------------------- TStopwatch timer; timer.Start(); // ------------------------------------------------------------------------ //Styling gStyle->SetHistFillColor(9); gStyle->SetCanvasColor(0); gStyle->SetLabelSize(0.025,"X"); gStyle->SetLabelSize(0.025,"Y"); gStyle->SetTitleSize(0.03,"Y"); gStyle->SetBarOffset(10); gStyle->SetTitleOffset(1,"X"); gStyle->SetTitleOffset(1.55,"Y"); gStyle->SetTitleSize(0.03,"X"); gStyle->SetPalette(1,0); gStyle->SetOptFit(1111); //TCanvas* can2 = new TCanvas("test2","Energy in MVD",200,200,1100,800); TH2D * histdedx = new TH2D("specEnergyLossVsP1","dE/dx(p)",200,0.0,1,200,0,0.05); histdedx->SetYTitle("dE/dx / (GeV/cm)"); histdedx->SetXTitle("p / (GeV/c)"); histdedx->SetMarkerColor(3); histdedx->SetStats(false); //opening tree TFile* inFile = new TFile("data/testPid.root","READ"); TTree* tree = (TTree *)inFile->Get("cbmsim"); TClonesArray* pointlist=new TClonesArray("PndMvdPidCand"); tree->SetBranchAddress("PndMvdPidCand",&pointlist); //variable TVector3 vecFront,vecBack,vecPFront,vecPBack; Int_t nEvents = 10000; Int_t b1,b2,b3,b4,b0,c1,c2,c3,c4,c0,,w; Double_t imP,eLoss; Int_t pdG,tracK; Double_t a0,a1,a2,a3,a4; TString ltext=""; Double_t pos,abst; b0=0; b1=0; b2=0; b3=0; b4=0; c0=0; c1=0; c2=0; c3=0; c4=0; w=0; int verbose = 0; for(int j=0;jGetEntriesFast();j++) { tree->GetEntry(j); for(int i=0;iGetEntriesFast();i++) { PndMvdPidCand* point=(PndMvdPidCand*)pointlist->At(i); point->getProb(a0,a1,a2,a3,a4); point->getMean(imP,eLoss); point->getTrack(tracK,pdG); if (verbose > 0) { cout<Fill(imP,eLoss); if(a0>0){b0++;} if(a1>0){b1++;} if(a2>0){b2++;} if(a3>0){b3++;} if(a4>0){b4++;} if(pdG==211){c0++;} if(pdG==321){c1++;} if(pdG==2212){c2++;} if(pdG==11){c3++;} if(pdG==13){c4++;} } } Double_t a1x[]={0.045,0.0834,0.13,0.19,0.25,0.46,0.55,0.65,0.86,0.99,0.81,0.46,0.25,0.15,0.073,0.026,0.003}; Double_t a1y[]={0.05,0.014,0.008,0.00602,0.00508,0.0038,0.0032,0.0028,0.0024,0.0022,0.0022,0.0021,0.0023,0.00256,0.005,0.013,0.05}; Double_t a2x[]={0.064,0.103,0.149,0.26,0.46,0.25,0.19,0.1303,0.0811,0.043}; Double_t a2y[]={0.05,0.0189,0.01077,0.00612,0.0038,0.00506,0.00607,0.00807023,0.0144724,0.05}; Double_t a3x[]={0.085,0.125,0.1928,0.3,0.4,0.46,0.26,0.145,0.099,0.064}; Double_t a3y[]={0.05,0.02078,0.012,0.0063,0.00473,0.0038,0.00607,0.011,0.0191,0.05}; Double_t a4x[]={0.103,0.1795,0.231,0.27,0.4,0.5,0.64,0.7456,0.99,0.75,0.65,0.55,0.4065,0.2992,0.1899,0.1291,0.095,0.095}; Double_t a4y[]= {0.05,0.0226,0.0181,0.015,0.00826,0.00672,0.005,0.00452,0.0039,0.0038,0.0038,0.0037,0.00468,0.00648,0.01236,0.02072,0.05}; Double_t a5x[]={0.99,0.86,0.65,0.55,0.4528,0.9968}; Double_t a5y[]={0.0022,0.0025,0.0028,0.0032,0.0038,0.00402}; Double_t a7x[]={0.1724,0.2855,0.3717,0.5443,0.7423,0.879,0.7464,0.4719,0.3347,0.2409,0.2106,0.1391}; Double_t a7y[]={0.05,0.02,0.014,0.008,0.00483,0.00435,0.00425,0.008,0.0137,0.02,0.03,0.05}; Double_t a6x[]={0.143,0.242,0.3358,0.4708,0.6028,0.7591,0.64,0.4019,0.2687,0.231,0.1795,0.104}; Double_t a6y[]={0.05,0.02,0.01367,0.008,0.00604,0.00435,0.00495,0.008,0.01491,0.01817,0.02265,0.05}; Double_t a8x[]={0.3,0.614,0.73,0.9988,1.000,0.7441,0.5443,0.3717,0.2855,0.2223,0.2008,0.1714}; Double_t a8y[]={0.0498,0.01382,0.01006,0.00857,0.00409,0.00468,0.00804,0.01388,0.02,0.0367,0.0425,0.05}; TPolyLine *pline1=new TPolyLine(17, a1x, a1y,""); TPolyLine *pline2=new TPolyLine(10, a2x, a2y,""); TPolyLine *pline3=new TPolyLine(10, a3x, a3y,""); TPolyLine *pline4=new TPolyLine(17, a4x, a4y,""); TPolyLine *pline5=new TPolyLine(6, a5x, a5y,""); TPolyLine *pline6=new TPolyLine(12, a6x, a6y,""); TPolyLine *pline7=new TPolyLine(12, a7x, a7y,""); TPolyLine *pline8=new TPolyLine(12, a8x, a8y,""); pline1->SetLineColor(2); pline1->SetLineWidth(5); pline2->SetLineColor(3); pline2->SetLineWidth(5); pline3->SetLineColor(4); pline3->SetLineWidth(5); pline4->SetLineColor(5); pline4->SetLineWidth(5); pline5->SetLineColor(6); pline5->SetLineWidth(5); pline6->SetLineColor(7); pline6->SetLineWidth(5); pline7->SetLineColor(8); pline7->SetLineWidth(5); pline8->SetLineColor(9); pline8->SetLineWidth(5); //Creating canvas and diagramms TCanvas* can1 = new TCanvas("test","Energy in MVD",200,200,1100,800); TPad *p1=new TPad("1","1",0,0,0.7,1); TPad *p2=new TPad("2","2",0.7,0,1,1); can1->cd(); p1->Draw(); p2->Draw(); p1->cd(); p1->cd(); // gPad->SetLogz(); // hist7->Add(hist8); // hist7->Add(hist9); // hist9->Draw("col"); histdedx->Draw("COL"); pline1->Draw("same"); pline2->Draw("same"); pline3->Draw("same"); pline4->Draw("same"); pline5->Draw("same"); pline6->Draw("same"); pline7->Draw("same"); pline8->Draw("same"); p2->cd(); TLatex *lat=new TLatex(); lat->SetTextAlign(1); lat->SetTextSize(0.08); ltext="Auswertung"; lat->DrawLatex(0.1,0.95,ltext); pos=0.9; abst=0.02; lat->SetTextSize(0.045); ltext="Pi gemessen= "; ltext+=b0; lat->DrawLatex(0.1,pos,ltext); pos-=abst; ltext="pi real= "; ltext+=c0; lat->DrawLatex(0.1,pos,ltext); pos-=abst; ltext="K gemessen="; ltext+=b1; lat->DrawLatex(0.1,pos,ltext); pos-=abst; ltext="K real="; ltext+=c1; lat->DrawLatex(0.1,pos,ltext); pos-=abst; ltext="P gemessen="; ltext+=b2; lat->DrawLatex(0.1,pos,ltext); pos-=abst; ltext="P real="; ltext+=c2; lat->DrawLatex(0.1,pos,ltext); pos-=abst; ltext="e gemessen="; ltext+=b3; lat->DrawLatex(0.1,pos,ltext); pos-=abst; ltext="e real="; ltext+=c3; lat->DrawLatex(0.1,pos,ltext); pos-=abst; ltext="Mu gemessen="; ltext+=b4; lat->DrawLatex(0.1,pos,ltext); pos-=abst; ltext="Mu real="; ltext+=c4; lat->DrawLatex(0.1,pos,ltext); TCanvas* can2 = new TCanvas("can2","Energyloss in MVD",20,20,800,600); can2->cd(); //gPad->SetLogz(1); histdedx->Draw("COL"); // ----- Finish ------------------------------------------------------- timer.Stop(); Double_t rtime = timer.RealTime(); Double_t ctime = timer.CpuTime(); cout << endl << endl; cout << "Macro finished succesfully." << endl; cout << "Real time " << rtime << " s, CPU time " << ctime << " s" << endl; cout << endl; // ------------------------------------------------------------------------ }