StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
St2009Z_histo.cxx
1 #include <TH2.h>
2 #include <TList.h>
3 #include <TLine.h>
4 #include <TMath.h>
5 
6 #include "St2009WMaker.h"
7 
8 #include "St2009ZMaker.h"
9 
10 //________________________________________________
11 //________________________________________________
12 void
13 St2009ZMaker::initHistos(){
14  const float PI=TMath::Pi();
15  TString core="_Z_"; // prefix added to every histo name, to allow for multipl maker saving histos in the same root file
16 
17 
18  //...... data histograms
19  memset(hA,0,sizeof(hA));
20  TList *Lx; TLine *ln;
21  TH1 *h; float yMax=1e3;
22  char txt[1000], txt0[100];;
23  int nCase=16;
24 
25  hA[0]=h=new TH1F(core+"EventType",core+" event type",nCase,0,nCase);
26  h->GetXaxis()->SetTitleOffset(0.4); h->GetXaxis()->SetLabelSize(0.06); h->GetXaxis()->SetTitleSize(0.05); h->SetMinimum(0.8);
27  h->SetLineColor(kBlue);h->SetLineWidth(2);
28  const char *key[]={"inp","vert","TT","tr1","et1","con1","tr2","et2","con2","phi12","m2","QQ","Zlow","Zhigh"};
29  for(int i=0;i<14;i++) h->Fill(key[i],0.); // preset the order of keys
30 
31 
32  //final selection stuff:
33 
34  hA[1]=h=new TH1F(core+"Zmass"," Final Z selection; Invariant Mass (GeV)", 100,0,200);
35  sprintf(txt,"Reconstructed Charge of each track in candidate ;First Charge;Second Charge");
36  hA[2]=h=new TH2F(core+"charge_v_charge", txt,3,-1.5,1.5,3,-1.5,1.5);
37  sprintf(txt,"Product of Reconstructed Charges of each track in candidate");
38  hA[3]=h=new TH1F(core+"charge_product", txt,3,-1.5,1.5);
39  hA[4]=h=new TH2F(core+"phi1_v_phi2","Comparison of azimuthal position of first and second track;Phi 1;Phi 2",100,-PI,PI,100,-PI,PI);
40  sprintf(txt,"Relative phi between two tracks in Z candidate");
41  hA[5]=h=new TH1F(core+"relative_phi", txt,100,0,PI*2.02);
42  hA[6]=h=new TH2F(core+"track_mom_v_mass","Q1/pT1*Q2/pT2 versus Invariant Mass;Mass (GeV);Q1/pT1*Q2/pT2",100,0,200,200,-0.1,0.1);
43  sprintf(txt,"Product of Electron Charges vs Reconstructed Mass;mass (GeV);Q1*Q2");
44  hA[7]=h=new TH2F(core+"charge_product_v_mass",txt,50,0,200,3,-1.5,1.5);
45  hA[8]=h=new TH1F(core+"et1","ET of first cluster (after cuts)",100,0,100);
46  hA[9]=h=new TH2F(core+"positron_pos","Location of e+ from Z;eta;phi",10,-1,1,10,-PI,PI);
47  hA[10]=h=new TH2F(core+"electron_pos","Location of e- from Z;eta;phi",10,-1,1,10,-PI,PI);
48  hA[11]=h=new TH2F(core+"fmax_v_fmax","Final Z Selection, Fmax v Fmax;fmax1;fmax2",100,0,1,100,0,1);
49  hA[12]=h=new TH2F(core+"et_v_et","Transverse Energies of the two Clusters;Et1;Et2",100,0,100,100,0,100);
50  hA[13]=h=new TH2F(core+"rel_phi_v_mass","Relative Phi vs Invariant Mass;mass;phi",50,0,200,100,0,PI*2.02);
51  hA[14]=h=new TH1F(core+"ZmassLike"," Final Z selection with Like Charges on both tracks; Invariant Mass (GeV)", 100,0,200);
52 
53  //cut details:
54  hA[15]=h=new TH1F(core+"ZmassUnlike"," Final Zs, Unlike Charge pairs; Invariant Mass (GeV)", 100,0,200); h->SetFillColor(kYellow);
55 
56  Lx=h->GetListOfFunctions();
57  ln=new TLine(par_minMassZ,0,par_minMassZ,yMax); ln->SetLineColor(kMagenta); Lx->Add(ln);
58  ln=new TLine(par_maxMassZ,0,par_maxMassZ,yMax); ln->SetLineColor(kMagenta); Lx->Add(ln);
59  ln=new TLine(91.2,-.2,91.2,10.); ln->SetLineColor(kGreen); ln->SetLineWidth(3); ln->SetLineStyle(1); Lx->Add(ln);
60 
61  hA[21]=h=new TH2F(core+"fmax_v_fmaxbefore","Final Z Selection, Fmax v Fmax;fmax1;fmax2",100,0,1,100,0,1);
62  hA[22]=h=new TH2F(core+"et_v_etbefore","Transverse Energies of the two Clusters;Et1;Et2",100,0,100,100,0,100);
63 
64  // new
65  hA[23]=h=new TH1F(core+"et1val","Track-1 ET before cuts; 2x2ET (GeV)",100,0,100);
66  Lx=h->GetListOfFunctions();
67  ln=new TLine(par_clusterEtZ,0,par_clusterEtZ,yMax); ln->SetLineColor(kMagenta); Lx->Add(ln);
68 
69  hA[24]=h=new TH1F(core+"et1frac","Track-1 cone ET fraction; 2x2ET/nearET",105,0,1.05);
70  Lx=h->GetListOfFunctions();
71  ln=new TLine(par_nearTotEtFracZ,0,par_nearTotEtFracZ,yMax); ln->SetLineColor(kMagenta); Lx->Add(ln);
72 
73  hA[25]=h=new TH1F(core+"et2val","Track-2 ET before cuts; 2x2ET (GeV)",100,0,100);
74  Lx=h->GetListOfFunctions();
75  ln=new TLine(par_clusterEtZ,0,par_clusterEtZ,yMax); ln->SetLineColor(kMagenta); Lx->Add(ln);
76 
77  hA[26]=h=new TH1F(core+"et2frac","Track-2 cone ET fraction; 2x2ET/nearET",105,0,1.05);
78  Lx=h->GetListOfFunctions();
79  ln=new TLine(par_nearTotEtFracZ,0,par_nearTotEtFracZ,yMax); ln->SetLineColor(kMagenta); Lx->Add(ln);
80 
81  hA[27]=h=new TH1F(core+"phi12","delta phi tr1-tr2; delPhi12(rad)", 100 ,-PI+1.,PI+1.);
82  h->SetFillColor(kBlue);
83  Lx=h->GetListOfFunctions();
84  ln=new TLine(par_delPhi12,0,par_delPhi12,yMax); ln->SetLineColor(kMagenta); Lx->Add(ln);
85  ln=new TLine(-par_delPhi12,0,-par_delPhi12,yMax); ln->SetLineColor(kMagenta); Lx->Add(ln);
86 
87 
88  hA[29]=h=new TH1F(core+"et1iso","Track-1 4x4 ET fract; 2x2ET / 4x4 ET",105,0,1.05);
89  Lx=h->GetListOfFunctions();
90  ln=new TLine(wMK->par_clustFrac24,0,wMK->par_clustFrac24,yMax); ln->SetLineColor(kMagenta); ln->SetLineStyle(2); Lx->Add(ln);
91 
92  hA[30]=h=new TH1F(core+"et2iso","Track-2 4x4 ET fract; 2x2ET / 4x4 ET",105,0,1.05);
93  Lx=h->GetListOfFunctions();
94  ln=new TLine(wMK->par_clustFrac24,0,wMK->par_clustFrac24,yMax); ln->SetLineColor(kMagenta); ln->SetLineStyle(2); Lx->Add(ln);
95 
96 
97  //event/vertex details:
98  hA[31]=h=new TH1F(core+"nVertices","Number of vertices per event",10,0,10);
99  hA[32]=h=new TH1F(core+"nTracks","Number of tracks per vertex",20,0,20);
100 
101  hA[33]=h=new TH2F(core+"chRecPNp","TPC PRIM Q/PT , black=pairs of unlike charges; 2x2 cluster ET (GeV); Q/PT",100,0.,100.,100,-0.1,0.1);
102  Lx=h->GetListOfFunctions();
103  ln=new TLine(0,0,100,0); ln->SetLineColor(kMagenta); Lx->Add(ln);
104 
105  hA[34]=h=new TH2F(core+"Ene_Deta","final Z: cluster energy vs. detector eta; barrel eta bin; 2x2 Energy (GeV)",40,0,40,50,0,100);
106 
107  //for stack plots
108  char tt2[][200]={"max 2x2","track matched","2x2 / 4x4","no near ET","no away ET"};
109  for(int i=0;i<5;i++){
110  //opposite sign pairs
111  sprintf(txt,"Unlike Charge pairs, cut=%s; Invariant Mass (GeV/c^2)",tt2[i]);
112  sprintf(txt0,"%sZmassUnlike%d",core.Data(),i);
113  hA[40+i]=h=new TH1F(txt0,txt, 100,0,200); h->SetFillColor(kYellow);
114  //like sign pairs
115  sprintf(txt,"Like Charge pairs, cut=%s; Invariant Mass (GeV/c^{2})",tt2[i]);
116  sprintf(txt0,"%sZmassLike%d",core.Data(),i);
117  hA[50+i]=h=new TH1F(txt0,txt, 100,0,200); h->SetFillColor(kYellow);
118  }
119 
120  hA[60]=h=new TH2F(core+"ZmassUnlike_zdc","Unlike Charge pairs vs ZDC coinc. rate; ZDC coincidence rate; Invariant Mass (GeV/c^2)",100,0,200000,100,0,200);
121  hA[61]=h=new TH2F(core+"ZmassLike_zdc","Like Charge pairs vs ZDC coinc. rate; ZDC coincidence rate; Invariant Mass (GeV/c^2)",100,0,200000,100,0,200);
122 
123  // add histos to the list (if provided)
124  for(int i=0;i<mxHA;i++) {
125  if( hA[i]==0) continue;
126  HList->Add( hA[i]);
127  }
128  // HList->ls();
129  LOG_INFO<<Form("%s::initHistos done1",GetName())<<endm;
130 
131 }
virtual const char * GetName() const
special overload
Definition: StMaker.cxx:237