/////////////////////////////////////////////////////////// // Test macro for AliITStracksV1Pid.root file // // JINR Dubna Jan 2002 // /////////////////////////////////////////////////////////// void AliITSScanPIDV1(Int_t evNumber1=0,Int_t evNumber2=0) { //................. Prepare histogramms ................ TH2F *qplot = new TH2F("Qtrm","Qtrm vs Pmom",100,0,1300,100,0,13); TH2F *qplotP= new TH2F("Qtrm","Qtrm vs Pmom",100,0,1300,100,0,13); TH2F *qplotKa= new TH2F("Qtrm","Qtrm vs Pmom",100,0,1300,100,0,13); TH2F *qplotPi= new TH2F("Qtrm","Qtrm vs Pmom",100,0,1300,100,0,13); TH2F *qplotE= new TH2F("Qtrm","Qtrm vs Pmom",100,0,1300,100,0,13); qplotP.SetMarkerStyle(8); qplotP.SetMarkerColor(kBlack); qplotP.SetMarkerSize(.3); qplotKa.SetMarkerStyle(8); qplotKa.SetMarkerColor(kRed); qplotKa.SetMarkerSize(.3); qplotPi.SetMarkerStyle(8); qplotPi.SetMarkerColor(kBlue); qplotPi.SetMarkerSize(.3); qplotE.SetMarkerStyle(8); qplotE.SetMarkerColor(kGreen); qplotE.SetMarkerSize(.3); //...................................................... TH1F *signal_mip = new TH1F("signal_mip","Signal (mips) for track",100,0.,15.); //***************************************************************************************************************************************** const char *filename="itstracks.root"; ///////////////// Dynamically link some shared libs //////////////////////////////// if (gClassTable->GetID("AliRun") < 0) { gROOT->LoadMacro("loadlibs.C"); loadlibs(); } else { delete gAlice; gAlice=0; } // Connect the Root Galice file containing Geometry, Kine and Hits TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(filename); if (!file) file = new TFile(filename); // // Loop over events // char tname[30]; for (int nev=evNumber1; nev<= evNumber2; nev++) { // for (int nev=0; nev<= evNumber2; nev++) { sprintf(tname,"TreeT%d",nev); TTree *tracktree=(TTree*)file->Get(tname); TBranch *tbranch=tracktree->GetBranch("ITStracks"); cout<<" nev = "<GetEntries(); TObjArray tarray(nentr); // AliITSIOTrack *iotrack=0; printf("nentr %d\n",nentr); for (Int_t i=0; iSetAddress(&iotrack); tracktree->GetEvent(i); tarray.AddLast(iotrack); } //file->Close(); AliITSIOTrack *iotrack; for (Int_t i=0; iGetPx(); Float_t Py=iotrack->GetPy(); Float_t Pz=iotrack->GetPz(); Float_t momentum = TMath::Sqrt(Px*Px+Py*Py+Pz*Pz); Float_t dEdx = iotrack->GetdEdx(); Int_t pcode = 211;//iotrack->GetPDG(); signal_mip->Fill(dEdx); if(pcode == 2212) qplotP.Fill(1000*momentum,dEdx); if(pcode == 321) qplotKa.Fill(1000*momentum,dEdx); if(pcode == 211) qplotPi.Fill(1000*momentum,dEdx); if(pcode == 11) qplotE.Fill(1000*momentum,dEdx); delete iotrack; } } // event loop file->Close(); //***************************************************************************************************************************************** //...................... Draw histogramms ................. TCanvas *c1 = new TCanvas("PID_test","Scan PID ",200,10,900,700); c1->Divide(2,1); //......................................................... c1->cd(1); gPad->SetFillColor(33); signal_mip->Draw(); c1->cd(2); //gPad->SetFillColor(33); qplot->Draw(); qplotP.Draw("same"); qplotKa.Draw("same"); qplotPi.Draw("same"); qplotE.Draw("same"); AliITSPid *pid =new AliITSPid(1000); c1->Range(0,0,1300,10); gStyle->SetLineColor(kRed); gStyle->SetLineWidth(2); TLine *lj[3],*lk[3]; for(Int_t j=0;j<3;j++){ Float_t x1,x2,y1,y2,xx1,xx2,yy1,yy2; x1=pid->cut[j+1][0]; x2=pid->cut[j+2][0]; y1=y2=pid->cut[j+2][2]; lj[j]=new TLine(1000*x1,y1,1000*x2,y2); lj[j]->Draw(); if(j==0){yy1=10.;}else{yy1=lj[j-1]->GetY1();} yy2=lj[j]->GetY1(); xx1=xx2=x1; lk[j]=new TLine(1000*xx1,yy1,1000*xx2,yy2); lk[j]->Draw(); } //Draw pions-kaons cuts. TLine *mj[7],*mk[7]; for(Int_t j=0;j<7;j++){ Float_t x1,x2,y1,y2,xx1,xx2,yy1,yy2; x1=pid->cut[j+2][0]; x2=pid->cut[j+3][0]; y1=y2=pid->cut[j+3][5]; mj[j]=new TLine(1000*x1,y1,1000*x2,y2); mj[j]->Draw(); if(j==0){yy1=10.;}else{yy1=mj[j-1]->GetY1();} yy2=mj[j]->GetY1(); xx1=xx2=x1; mk[j]=new TLine(1000*xx1,yy1,1000*xx2,yy2); mk[j]->Draw(); } cout<<"End of file AliITStracksV1Pid.root "<