zdc_tpc_selection_old_release.C 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*************************************************************************************
  2. * Basic macro to obtain MPD centrality maps from MC transported data
  3. * Created by: litvin@nf.jinr.ru
  4. * Version: 30-Jan-2012
  5. ************************************************************************************/
  6. void zdc_tpc_selection (const char *filename1="evetest.root",
  7. const char *output_filename="tmp.root")
  8. {
  9. char request[100];
  10. char *ename;
  11. Int_t n_events=100;
  12. Int_t nn, ne;
  13. TH1F *htmp=0;
  14. Double_t ee;
  15. Double_t bb[]={0,3.4,4.74,6.7,8.21,9.4,10.6,11.6,12.55,20};
  16. Int_t pp[]={0,5,10,20,30,40,50,60,70,100};
  17. Int_t cc[]={kCyan-2,kRed, kBlue,kGreen-5,kBlack,kAzure+2,kMagenta+2,kBlue+2,kRed+2,kBlue };
  18. if (output_filename) {
  19. TFile *fo=new TFile (output_filename,"UPDATE");
  20. TChain chain ("cbmsim");
  21. chain.Add(filename1);
  22. TChain *t=&chain;
  23. n_events = t->GetEntries();
  24. for (int b=0;b<9;b++) {
  25. TCut ccurrent=Form("MCEventHeader.fB>%g&&MCEventHeader.fB<=%g",bb[b],bb[b+1]);
  26. sprintf (request,">>ep%d",pp[b+1]);
  27. ename = (&(request[2]));
  28. nn=t->Draw(request,ccurrent,"entrylist");
  29. TEntryList *evN=(TEntryList*)gDirectory->Get(ename);
  30. ne=evN->GetN();
  31. if (ne) {
  32. t->SetEntryList(evN);
  33. ename = (&(request[3]));
  34. TH2F *h2=new TH2F(ename,ename,500,0,1000,250,0,50);
  35. for (int i=0;i<ne;i++) {
  36. nn=t->Draw("TpcPoint.fTrackID","(MCTrack.fNPoints&2)&&MCTrack.fMotherId==-1","goff",1,i);
  37. t->Draw("ZdcPoint.fTrackID>>htmp","ZdcPoint.fELoss*(ZdcPoint.fELoss>0)","goff",1,i);
  38. htmp=(TH1F*)gROOT->FindObject("htmp");
  39. ee=htmp->Integral();
  40. h2->Fill(nn,ee);
  41. htmp->Delete();
  42. }
  43. h2->SetMarkerColor(cc[b]);
  44. h2->SetMarkerStyle(20);
  45. h2->SetLineColor(cc[b]);
  46. h2->SetTitle(Form("%d-%d%%",pp[b],pp[b+1]));
  47. h2->GetXaxis()->SetTitle("TPC primary tracks multiplicity");
  48. h2->GetYaxis()->SetTitle("Eloss at ZDC");
  49. h2->SetDirectory(fo);
  50. cout << h2->GetTitle() << " " << ne << endl;
  51. t->SetEntryList(0);
  52. }
  53. evN->Delete();
  54. }
  55. fo->Write();
  56. }
  57. }