ATLAS Offline Software
CheckFlow_New_Minbias.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // File: Generators/FlowAfterburnber/CheckFlow_New_Minbias.h
6 // Description:
7 // This is a simple algorithm to histogram particle properties
8 // for diagnosing of flow generation
9 //
10 //************************** THIS PROGRAM ANALYZES FILES WITH VARYING b_imp(Min Bias)*********************
11 //
12 // AuthorList:
13 // Andrzej Olszewski: Initial Code February 2006
14 // Andrzej Olszewski: Converted to ROOT histograms July 2007
15 // Soumya Mohapatra : Re-written to check the new Flow implementations (JUNE 2011)
16 
19 
20 #include "GaudiKernel/SmartDataPtr.h"
21 #include "GaudiKernel/DataSvc.h"
22 
23 #include "GaudiKernel/ITHistSvc.h"
24 
25 #include <TH1D.h>
26 #include <TProfile.h>
27 
28 
29 #include "AtlasHepMC/GenEvent.h"
30 #include "AtlasHepMC/GenParticle.h"
31 #include "AtlasHepMC/GenVertex.h"
32 
34 
35 
36 //typedef std::vector<HepMC::ConstGenParticlePtr> MCParticleCollection ;
37 
38 CheckFlow_New_Minbias::CheckFlow_New_Minbias(const std::string& name, ISvcLocator* pSvcLocator) :
39  AthAlgorithm(name, pSvcLocator)
40 {
41  //Declare the algorithm's properties
42  declareProperty("McEventKey" , m_key ="FLOW_EVENT");
43  declareProperty("HistogramFlag" , m_produceHistogram = true );
44  declareProperty("ImpactCutMin" , m_bcut_min = 0 );
45  declareProperty("ImpactCutMax" , m_bcut_max = 99 );
46  declareProperty("PtCutMin" , m_ptcut_min = 0 );
47  declareProperty("PtCutMax" , m_ptcut_max = 999999 );
48  declareProperty("RapidityCutMin", m_rapcut_min = 0 );
49  declareProperty("RapidityCutMax", m_rapcut_max = 5.5 );
50 
51  m_thistSvc = 0;
52  m_tesIO = 0;
53 }
54 
55 
57  StatusCode result = StatusCode::SUCCESS;
58 
59  ATH_MSG_INFO(">>> CheckFlow_New_Minbias from Initialize");
60 
61 
62  ServiceHandle<ITHistSvc> rootHistSvc("THistSvc",name());
63  CHECK( rootHistSvc.retrieve() );
64  std::string histPath = "/FlowOutPut/";
65  std::vector<TH1*> hist_vec;
66  char name[100],name1[100];
67 
68 
69  for (int ihar=0;ihar<6;ihar++){
70  for(int ib_imp=0;ib_imp<n_b_bins;ib_imp++){
71 
72  const float pt_binvals[]={0.0,0.25,0.5,1.0,1.5,2.0,2.5,3.0,3.5,4.0,6.0,8.0,12.0,16.0,20.0,30.0,40.0};
73  //const float b_bin_vals[]={0.0,3.4955,4.9315,6.0375,6.9695,7.7895,8.5335,9.2135,9.8515,10.4485,11.0175,
74  // 11.554,12.070,12.560,13.033,13.492,13.944,14.409,14.929,15.6425};
75  const float eta_bin_max = 4.0;
76 //----------------------------------------The reconstructed and truth Psi and the correlations between them-----------------------------
77  sprintf(name,"hist_Psi_%d_true_b%d",ihar+1,ib_imp);
78  sprintf(name1,"Truth Psi_{%d} distribution;%dPsi_{%d} Truth;events",ihar+1,ihar+1,ihar+1);
79  m_hist_Psi_n_true [ihar][ib_imp]=new TH1D (name,name1,1000,-M_PI,M_PI);
80  hist_vec.push_back(m_hist_Psi_n_true [ihar][ib_imp]);
81 
82  sprintf(name,"hist_Psi_%d_reco_b%d",ihar+1,ib_imp);
83  sprintf(name1,"Reconstructed Psi_{%d} distribution;%dPsi_{%d} Reco;events",ihar+1,ihar+1,ihar+1);
84  m_hist_Psi_n_reco [ihar][ib_imp]=new TH1D (name,name1,1000,-M_PI,M_PI);
85  hist_vec.push_back(m_hist_Psi_n_reco [ihar][ib_imp]);
86 
87 
88  for (int ihar2=0;ihar2<6;ihar2++){
89  int ihar_i=ihar*6+ihar2;
90 
91  sprintf(name,"hist_Psi_corr_true_b%d_%d_%d",ib_imp,ihar+1,ihar2+1);
92  sprintf(name1,"true Psi_{%d} -Psi_{%d};%dPsi_{%d} -%dPsi_{%d} ;events",ihar+1,ihar2+1,ihar+1,ihar+1,ihar2+1,ihar2+1);
93  m_hist_psi_corr_true [ihar_i][ib_imp]=new TH1D (name,name1,1000,-2*M_PI,2*M_PI);
94  hist_vec.push_back(m_hist_psi_corr_true [ihar_i][ib_imp]);
95 
96  sprintf(name,"hist_Psi_corr_reco_%d_%d_%d",ib_imp,ihar+1,ihar2+1);
97  sprintf(name1,"reco Psi_{%d} -Psi_{%d};%dPsi_{%d} -%dPsi_{%d} ;events",ihar+1,ihar2+1,ihar+1,ihar+1,ihar2+1,ihar2+1);
98  m_hist_psi_corr_reco [ihar_i][ib_imp]=new TH1D (name,name1,1000,-2*M_PI,2*M_PI);
99  hist_vec.push_back(m_hist_psi_corr_reco [ihar_i][ib_imp]);
100  }
101 //------------------------------------------------------------------------------------------
102 
103 
104 
105 //-----------------------------------------------------------------------------------------
106  //integrated vn event by event
107  sprintf(name,"hist_v%d_b%d_ebe",ihar+1,ib_imp);
108  sprintf(name1,"v%d;v%d;events",ihar+1,ihar+1);
109  m_hist_vn_ebe [ihar][ib_imp]=new TH1D (name,name1,1000,-0.5,0.5);
110  hist_vec.push_back(m_hist_vn_ebe [ihar][ib_imp]);
111 
112  sprintf(name,"hist_v%d_b%d_ebe_ID1",ihar+1,ib_imp);
113  sprintf(name1,"v%d;v%d;events",ihar+1,ihar+1);
114  m_hist_vn_ebe_ID1 [ihar][ib_imp]=new TH1D (name,name1,800,0.0,0.4);
115  sprintf(name,"hist_v%d_b%d_ebe_ID2",ihar+1,ib_imp);
116  m_hist_vn_ebe_ID2 [ihar][ib_imp]=new TH1D (name,name1,800,0.0,0.4);
117  hist_vec.push_back(m_hist_vn_ebe_ID1 [ihar][ib_imp]);
118  hist_vec.push_back(m_hist_vn_ebe_ID2 [ihar][ib_imp]);
119 
120  sprintf(name ,"hist_Psi%d_b%d_ebe",ihar+1,ib_imp);
121  sprintf(name1,"%d#Delta#Psi;%d(#Psi_{reco}-#Psi_{Truth});events",ihar+1,ihar+1);
122  m_hist_Psi_n_ebe [ihar][ib_imp]=new TH1D (name,name1,1000,-M_PI,M_PI);
123  hist_vec.push_back(m_hist_Psi_n_ebe [ihar][ib_imp]);
124 
125  sprintf(name ,"hist_Psi%d_b%d_ebe_pt",ihar+1,ib_imp);
126  sprintf(name1,"%d#Delta#Psi (pT weighted);%d(#Psi_{reco}-#Psi_{Truth});events",ihar+1,ihar+1);
127  m_hist_Psi_n_ebe_pt [ihar][ib_imp]=new TH1D (name,name1,1000,-M_PI,M_PI);
128  hist_vec.push_back(m_hist_Psi_n_ebe_pt [ihar][ib_imp]);
129 //-----------------------------------------------------------------------------------------
130 
131 
132 
133 
134 
135 //-----------------------------------------------------------------------------------------
136  for(int ieta=0;ieta<n_etabin;ieta++){
137  sprintf(name ,"profile_pt_dep_%d_eta%d_b%d" ,ihar+1,ieta,ib_imp);
138  sprintf(name1,"v%d vs pT (eta%d);pT;v%d",ihar+1,ieta,ihar+1);
139  m_profile_pt_dep [ihar][ib_imp][ieta]=new TProfile (name,name1,n_ptbin,pt_binvals);
140  hist_vec.push_back(m_profile_pt_dep [ihar][ib_imp][ieta]);
141  }
142 
143  for(int ipt=0;ipt<n_ptbin;ipt++){
144  sprintf(name ,"profile_eta_dep_%d_pt%d_b%d",ihar+1,ipt,ib_imp);
145  sprintf(name1,"v%d vs #eta; (ipt%d)#eta;v%d",ihar+1,ipt,ihar+1);
146  m_profile_eta_dep [ihar][ib_imp][ipt]=new TProfile (name,name1,2*n_etabin, -eta_bin_max,eta_bin_max);
147  hist_vec.push_back(m_profile_eta_dep [ihar][ib_imp][ipt]);
148  }
149 
150 
151  for(int ieta=0;ieta<n_etabin;ieta++){
152  sprintf(name ,"profile_pt_dep_reco_%d_eta%d_b%d",ihar+1,ieta,ib_imp);
153  sprintf(name1,"v%d vs pT (eta%d);pT;v%d",ihar+1,ieta,ihar+1);
154  m_profile_pt_dep_reco [ihar][ib_imp][ieta]=new TProfile (name,name1,n_ptbin,pt_binvals);
155  hist_vec.push_back(m_profile_pt_dep_reco [ihar][ib_imp][ieta]);
156  }
157 
158 
159  for(int ipt=0;ipt<n_ptbin;ipt++){
160  sprintf(name ,"profile_eta_dep_reco_%d_pt%d_b%d",ihar+1,ipt,ib_imp);
161  sprintf(name1,"v%d vs #eta (pt%d);#eta;v%d",ihar+1,ipt,ihar+1);
162  m_profile_eta_dep_reco [ihar][ib_imp][ipt]=new TProfile (name,name1,2*n_etabin, -eta_bin_max,eta_bin_max);
163  hist_vec.push_back(m_profile_eta_dep_reco [ihar][ib_imp][ipt]);
164  }
165  }
166 
167 
168 
169  for(int ipt=0;ipt<n_ptbin;ipt++){
170  for(int ieta=0;ieta<n_etabin;ieta++){
171  sprintf(name ,"profile_b_dep_%d_pt%d_eta%d",ihar+1,ipt,ieta);
172  sprintf(name1,"v%d vs cent ;cent;v%d",ihar+1,ihar+1);
173  m_profile_b_dep [ihar][ipt][ieta]=new TProfile (name,name1,n_b_bins,-0.5,n_b_bins-0.5);
174  hist_vec.push_back(m_profile_b_dep [ihar][ipt][ieta]);
175 
176  sprintf(name ,"profile_b_dep_reco_%d_pt%d_eta%d",ihar+1,ipt,ieta);
177  sprintf(name1,"v%d vs cent ;cent;v%d",ihar+1,ihar+1);
178  m_profile_b_dep_reco [ihar][ipt][ieta]=new TProfile (name,name1,n_b_bins,-0.5,n_b_bins-0.5);
179  hist_vec.push_back(m_profile_b_dep_reco [ihar][ipt][ieta]);
180  }
181  }
182 
183  sprintf(name,"profile_resolution_%d",ihar+1);
184  m_profile_resolution[ihar]=new TProfile(name,"vn resolution;n;resolution",n_b_bins,-0.5,n_b_bins-0.5);
185  hist_vec.push_back(m_profile_resolution[ihar]);
186  }
187 //-----------------------------------------------------------------------------------------
188 
189  for(auto& hist: hist_vec){
190  CHECK(rootHistSvc->regHist(histPath+hist->GetName(),hist));
191  hist->GetXaxis()->CenterTitle();
192  hist->GetYaxis()->CenterTitle();
193  }
194 
195 
196  ATH_MSG_DEBUG("Histograms have been booked ");
198  return result;
199 }
200 
201 
202 
204 
205  ATH_MSG_INFO(">>> CheckFlow_New_Minbias from execute");
206  const float pt_binvals[]={0.0,0.25,0.5,1.0,1.5,2.0,2.5,3.0,3.5,4.0,6.0,8.0,12.0,16.0,20.0,30.0,40.0};
207  const float b_bin_vals[]={0.0,3.4955,4.9315,6.0375,6.9695,7.7895,8.5335,9.2135,9.8515,10.4485,11.0175,11.554,12.070,12.560,13.033,13.492,13.944,14.409,14.929,15.6425};
208  const float eta_bin_max = 4.0;
209  const HijingEventParams *hijing_pars;
210 
211 
212  CHECK(evtStore()->retrieve(hijing_pars, "Hijing_event_params"));
213  float b = hijing_pars->get_b();
214  float Psi_n[6],Psi_n_reco[6];
215  for(int ihar=0;ihar<6;ihar++){Psi_n[ihar]=hijing_pars->get_psi(ihar+1);}
216  ATH_MSG_INFO("SOUMYA "<<hijing_pars->get_psi(1)<<" "<<hijing_pars->get_psi(2)<<" "\
217  <<hijing_pars->get_psi(3)<<" "<<hijing_pars->get_psi(4)<<" "\
218  <<hijing_pars->get_psi(5)<<" "<<hijing_pars->get_psi(6)<<" "\
219  <<b);
220 
221 
222 
223  int ib_imp=-1;
224  for(int ib=0;ib<n_b_bins;ib++){if(b<b_bin_vals[ib+1]) {ib_imp=ib;break;}}
225  if(ib_imp<0) return StatusCode::SUCCESS;
226  if(ib_imp==0) {std::cout<<"AAAAAAAAAAAAAAAAAAAA "<<b<<std::endl;}
227 
228  // Check cut on impact parameter b
229  if(b<m_bcut_min || b>m_bcut_max) return StatusCode::SUCCESS;
230 
231 
232  double ngenerated_pos = 0,ngenerated_pt_pos=0;
233  double ngenerated_neg = 0,ngenerated_pt_neg=0;
234  double cos_n_pos[6],sin_n_pos[6],cos_n_pt_pos[6],sin_n_pt_pos[6];
235  double cos_n_neg[6],sin_n_neg[6],cos_n_pt_neg[6],sin_n_pt_neg[6];
236  double cos_ID1[6],sin_ID1[6],tot_ID1=0.0;
237  double cos_ID2[6],sin_ID2[6],tot_ID2=0.0;
238  for(int ihar=0;ihar<6;ihar++){
239  cos_n_pos [ihar]=0;
240  sin_n_pos [ihar]=0;
241  cos_n_pt_pos[ihar]=0;
242  sin_n_pt_pos[ihar]=0;
243  cos_n_neg [ihar]=0;
244  sin_n_neg [ihar]=0;
245  cos_n_pt_neg[ihar]=0;
246  sin_n_pt_neg[ihar]=0;
247  cos_ID1 [ihar]=0;
248  sin_ID1 [ihar]=0;
249  cos_ID2 [ihar]=0;
250  sin_ID2 [ihar]=0;
251  }
252 
253 
254  // Iterate over MC particles
255  std::vector<HepMC::ConstGenParticlePtr> particles;
256  CHECK(m_tesIO->getMC(particles, false, m_key));
257 
258  for (auto pitr: particles) {
259  int pid = pitr->pdg_id();
260  int p_stat = pitr->status();
261  double pt = pitr->momentum().perp();
262  double rapid = pitr->momentum().pseudoRapidity();
263  double phi = pitr->momentum().phi();
264  ATH_MSG_DEBUG(" PID = " << pid << " Status = " << p_stat \
265  << " Eta = " << rapid << " Phi = " << phi);
266 
267  if( (std::abs(rapid) >= m_rapcut_min) &&
268  (std::abs(rapid) <= m_rapcut_max) &&
269  (std::abs(pt) >= m_ptcut_min ) &&
270  (std::abs(pt) <= m_ptcut_max)) {
271 
272  for(int ihar=0;ihar<6;ihar++){
273  float temp=(ihar+1)*(phi-Psi_n[ihar]);
274 
275  int ieta= (int)(std::abs(rapid)*n_etabin/eta_bin_max);
276  if(ieta>=0 && ieta<n_etabin) m_profile_pt_dep [ihar][ib_imp][ieta]->Fill(pt/1000,cos(temp));
277 
278 
279  float temp_pt=pt/1000;
280  for(int ipt=0;ipt<n_ptbin;ipt++){
281  if(temp_pt<pt_binvals[ipt+1]){
282  m_profile_eta_dep[ihar][ib_imp][ipt]->Fill(rapid ,cos(temp));
283  if(ieta>=0 && ieta<n_etabin) m_profile_b_dep [ihar][ipt][ieta]->Fill(ib_imp,cos(temp));
284  break;
285  }
286  }
287 
288  if( rapid >3.2 && rapid< 4.9){
289  cos_n_pos[ihar]+=std::cos( (ihar+1)*phi);
290  sin_n_pos[ihar]+=std::sin( (ihar+1)*phi);
291  ngenerated_pos++;
292 
293  cos_n_pt_pos[ihar]+=pt*cos( (ihar+1)*phi);
294  sin_n_pt_pos[ihar]+=pt*sin( (ihar+1)*phi);
295  ngenerated_pt_pos +=pt;
296  }
297  if( rapid <-3.2 && rapid >-4.9){
298  cos_n_neg[ihar]+=std::cos( (ihar+1)*phi);
299  sin_n_neg[ihar]+=std::sin( (ihar+1)*phi);
300  ngenerated_neg++;
301 
302  cos_n_pt_neg[ihar]+=pt*std::cos( (ihar+1)*phi);
303  sin_n_pt_neg[ihar]+=pt*std::sin( (ihar+1)*phi);
304  ngenerated_pt_neg +=pt;
305  }
306  }
307  }
308 
309  //EbE vn for ID acceptance end pt>0.5GeV
310  if(std::abs(pt)>=500){
311  tot_ID1++;
312  for(int ihar=0;ihar<6;ihar++){
313  cos_ID1[ihar]+=cos((ihar+1)*phi);
314  sin_ID1[ihar]+=sin((ihar+1)*phi);
315  }
316  }
317  if(std::abs(pt)>=0){
318  tot_ID2++;
319  for(int ihar=0;ihar<6;ihar++){
320  cos_ID2[ihar]+=cos((ihar+1)*phi);
321  sin_ID2[ihar]+=sin((ihar+1)*phi);
322  }
323  }
324  }
325 
326 
327 //EbE vn for ID acceptance end pt>0.5GeV
328  for(int ihar=0;ihar<6;ihar++){
329  if(tot_ID1>0.01){
330  double temp1= std::sqrt(cos_ID1[ihar]*cos_ID1[ihar] + sin_ID1[ihar]*sin_ID1[ihar])/tot_ID1;
331  m_hist_vn_ebe_ID1[ihar][ib_imp]->Fill(temp1);
332  }
333  if(tot_ID2>0.01){
334  double temp2= std::sqrt(cos_ID2[ihar]*cos_ID2[ihar] + sin_ID2[ihar]*sin_ID2[ihar])/tot_ID2;
335  m_hist_vn_ebe_ID2[ihar][ib_imp]->Fill(temp2);
336  }
337  }
338 
339 
340 // Calculate the event by event vn and also the reconstructed Psi_n angles
341 // Also make correlation histos between Psi_n_truth and Psi_n_reco
342  float cos_n[6],sin_n[6],cos_n_pt[6],sin_n_pt[6];
343  float Psi_n_reco_pos[6],Psi_n_reco_neg[6];
344  for(int ihar=0;ihar<6;ihar++){
345  cos_n[ihar] = ( cos_n_pos[ihar]+ cos_n_neg[ihar] ) / (ngenerated_pos+ngenerated_neg);
346  sin_n[ihar] = ( sin_n_pos[ihar]+ sin_n_neg[ihar] ) / (ngenerated_pos+ngenerated_neg);
347 
348  float psi_reco=std::atan2(sin_n[ihar],cos_n[ihar])/(ihar+1);
349  m_hist_Psi_n_ebe[ihar][ib_imp]->Fill( (ihar+1)*(psi_reco-Psi_n[ihar]) );
350  m_hist_vn_ebe [ihar][ib_imp]->Fill(std::sqrt(cos_n[ihar]*cos_n[ihar] +sin_n[ihar]*sin_n[ihar] ));
351 
352  Psi_n_reco_pos[ihar]=std::atan2(sin_n_pos[ihar],cos_n_pos[ihar])/ (ihar+1);
353  Psi_n_reco_neg[ihar]=std::atan2(sin_n_neg[ihar],cos_n_neg[ihar])/ (ihar+1);
354  Psi_n_reco [ihar]=psi_reco;
355 
356 
357  cos_n_pt[ihar] = ( cos_n_pt_pos[ihar]+ cos_n_pt_neg[ihar] ) / (ngenerated_pt_pos+ngenerated_pt_neg);
358  sin_n_pt[ihar] = ( sin_n_pt_pos[ihar]+ sin_n_pt_neg[ihar] ) / (ngenerated_pt_pos+ngenerated_pt_neg);
359 
360  psi_reco=std::atan2(sin_n_pt[ihar],cos_n_pt[ihar])/(ihar+1);
361  m_hist_Psi_n_ebe_pt[ihar][ib_imp]->Fill( (ihar+1)*(psi_reco-Psi_n[ihar]) );
362  }
363 
364 
365 // Make the plots for the correlation between Psi_n truth (for different n) (same for Psi_n reco)
366  for(int ihar=0;ihar<6;ihar++){
367  m_hist_Psi_n_true[ihar][ib_imp]->Fill((ihar+1)*Psi_n[ihar]);
368  m_hist_Psi_n_reco[ihar][ib_imp]->Fill((ihar+1)*Psi_n_reco[ihar]);
369 
370  float psi1,psi2;
371  for(int ihar2=0;ihar2<6;ihar2++){
372  psi1=(ihar+1)*Psi_n[ihar];psi2=(ihar2+1)*Psi_n[ihar2];
373  m_hist_psi_corr_true[ihar*6+ihar2][ib_imp]->Fill( std::atan2( std::sin(psi1-psi2),std::cos(psi1-psi2) ) );
374 
375  psi1=(ihar+1)*Psi_n_reco[ihar];psi2=(ihar2+1)*Psi_n_reco[ihar2];
376  m_hist_psi_corr_reco[ihar*6+ihar2][ib_imp]->Fill( std::atan2( std::sin(psi1-psi2),std::cos(psi1-psi2) ) );
377  }
378  }
379 
380 
381 
382 
383 
384 // calculate the pt and eta dependence using the Psi_reco angles also fill the resolution TProfile
385  for(int ihar=0;ihar<6;ihar++){
386  m_profile_resolution[ihar]->Fill( ib_imp, cos( (ihar+1) * (Psi_n_reco_pos[ihar] - Psi_n_reco_neg[ihar]) ) );
387  if(ib_imp==0) {std::cout<<"i11111111111111111111 "<<b<<std::endl;}
388  }
389  for (auto pitr: particles) {
390  double pt = pitr->momentum().perp();
391  double rapid = pitr->momentum().pseudoRapidity();
392  double phi = pitr->momentum().phi();
393  if( (std::abs(rapid) >= m_rapcut_min) && (std::abs(rapid) <= m_rapcut_max) &&
394  (std::abs(pt) >= m_ptcut_min) && (std::abs(pt) <= m_ptcut_max) ) {
395 
396  for(int ihar=0;ihar<6;ihar++){
397  float temp=(ihar+1)*(phi-Psi_n_reco_pos[ihar]);
398  if(rapid>0) temp=(ihar+1)*(phi-Psi_n_reco_neg[ihar]);
399 
400 
401  int ieta= (int)(std::abs(rapid)*n_etabin/eta_bin_max);
402  if(ieta>=0 && ieta<n_etabin) m_profile_pt_dep_reco [ihar][ib_imp][ieta]->Fill(pt/1000,cos(temp));
403 
404  float temp_pt=pt/1000;
405  for(int ipt=0;ipt<n_ptbin;ipt++){
406  if(temp_pt<pt_binvals[ipt+1]){
407  m_profile_eta_dep_reco[ihar][ib_imp][ipt]->Fill(rapid ,cos(temp));
408  if(ieta>=0 && ieta<n_etabin) m_profile_b_dep_reco [ihar][ipt][ieta]->Fill(ib_imp,cos(temp));
409  break;
410  }
411  }
412  }
413  }
414  }
415 
416  return StatusCode::SUCCESS;
417 }
418 
420 
421  ATH_MSG_INFO(">>> CheckFlow_New from finalize");
422 
423  return StatusCode::SUCCESS;
424 }
425 
CheckFlow_New_Minbias::m_rapcut_min
double m_rapcut_min
Definition: CheckFlow_New_Minbias.h:48
CheckFlow_New_Minbias::m_hist_vn_ebe_ID1
TH1D * m_hist_vn_ebe_ID1[6][n_b_bins]
Definition: CheckFlow_New_Minbias.h:67
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
CheckFlow_New::m_tesIO
TruthHelper::GenAccessIO * m_tesIO
Definition: CheckFlow_New.h:71
CheckFlow_New::m_key
std::string m_key
Definition: CheckFlow_New.h:37
GenEvent.h
ReadCellNoiseFromCool.name1
name1
Definition: ReadCellNoiseFromCool.py:233
get_generator_info.result
result
Definition: get_generator_info.py:21
CheckFlow_New_Minbias::m_hist_Psi_n_reco
TH1D * m_hist_Psi_n_reco[6][n_b_bins]
Definition: CheckFlow_New_Minbias.h:60
CheckFlow_New_Minbias::n_b_bins
@ n_b_bins
Definition: CheckFlow_New_Minbias.h:55
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
CheckFlow_New_Minbias::m_hist_psi_corr_reco
TH1D * m_hist_psi_corr_reco[36][n_b_bins]
Definition: CheckFlow_New_Minbias.h:62
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
CheckFlow_New_Minbias.h
HijingEventParams.h
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
CheckFlow_New_Minbias::m_profile_resolution
TProfile * m_profile_resolution[6]
Definition: CheckFlow_New_Minbias.h:78
CheckFlow_New_Minbias::m_bcut_max
double m_bcut_max
Definition: CheckFlow_New_Minbias.h:45
CheckFlow_New_Minbias::m_profile_eta_dep
TProfile * m_profile_eta_dep[6][n_b_bins][n_ptbin]
Definition: CheckFlow_New_Minbias.h:71
CheckFlow_New_Minbias::m_hist_Psi_n_ebe
TH1D * m_hist_Psi_n_ebe[6][n_b_bins]
Definition: CheckFlow_New_Minbias.h:64
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
plotmaker.hist
hist
Definition: plotmaker.py:148
GenVertex.h
TH1D
Definition: rootspy.cxx:342
test_pyathena.pt
pt
Definition: test_pyathena.py:11
M_PI
#define M_PI
Definition: ActiveFraction.h:11
PlotCalibFromCool.ib
ib
Definition: PlotCalibFromCool.py:419
HijingEventParams::get_psi
float get_psi(int n) const
Definition: HijingEventParams.h:95
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
GenParticle.h
CheckFlow_New::m_rapcut_min
double m_rapcut_min
Definition: CheckFlow_New.h:44
CheckFlow_New::m_rapcut_max
double m_rapcut_max
Definition: CheckFlow_New.h:45
CheckFlow_New::m_ptcut_max
double m_ptcut_max
Definition: CheckFlow_New.h:43
CheckFlow_New_Minbias::m_profile_b_dep
TProfile * m_profile_b_dep[6][n_ptbin][n_etabin]
Definition: CheckFlow_New_Minbias.h:75
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
CheckFlow_New_Minbias::m_hist_psi_corr_true
TH1D * m_hist_psi_corr_true[36][n_b_bins]
Definition: CheckFlow_New_Minbias.h:61
CheckFlow_New_Minbias::finalize
StatusCode finalize()
Definition: CheckFlow_New_Minbias.cxx:419
McEventCollection.h
python.TrigEgammaMonitorHelper.TProfile
def TProfile(*args, **kwargs)
Definition: TrigEgammaMonitorHelper.py:81
CheckFlow_New::m_thistSvc
ITHistSvc * m_thistSvc
Definition: CheckFlow_New.h:70
CheckFlow_New_Minbias::n_etabin
@ n_etabin
Definition: CheckFlow_New_Minbias.h:54
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
CheckFlow_New::m_bcut_max
double m_bcut_max
Definition: CheckFlow_New.h:41
HijingEventParams
Definition: HijingEventParams.h:23
ParticleGun_EoverP_Config.pid
pid
Definition: ParticleGun_EoverP_Config.py:62
CheckFlow_New_Minbias::m_ptcut_max
double m_ptcut_max
Definition: CheckFlow_New_Minbias.h:47
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
TruthHelper::GenAccessIO::getMC
StatusCode getMC(MCParticleCollection &mcParticles, const bool ifgen=false, const std::string &key="GEN_EVENT") const
Definition: Generators/FlowAfterburner/FlowAfterburner/GenAccessIO.h:32
CheckFlow_New_Minbias::m_profile_b_dep_reco
TProfile * m_profile_b_dep_reco[6][n_ptbin][n_etabin]
Definition: CheckFlow_New_Minbias.h:76
CheckFlow_New_Minbias::execute
StatusCode execute()
Definition: CheckFlow_New_Minbias.cxx:203
CheckFlow_New_Minbias::m_profile_eta_dep_reco
TProfile * m_profile_eta_dep_reco[6][n_b_bins][n_ptbin]
Definition: CheckFlow_New_Minbias.h:73
CheckFlow_New::m_ptcut_min
double m_ptcut_min
Definition: CheckFlow_New.h:42
CheckFlow_New_Minbias::initialize
StatusCode initialize()
Definition: CheckFlow_New_Minbias.cxx:56
AthAlgorithm
Definition: AthAlgorithm.h:47
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
TruthHelper::GenAccessIO
Definition: Generators/FlowAfterburner/FlowAfterburner/GenAccessIO.h:24
CheckFlow_New_Minbias::m_ptcut_min
double m_ptcut_min
Definition: CheckFlow_New_Minbias.h:46
CheckFlow_New_Minbias::m_key
std::string m_key
Definition: CheckFlow_New_Minbias.h:41
HijingEventParams::get_b
float get_b() const
Definition: HijingEventParams.h:91
CheckFlow_New_Minbias::m_hist_Psi_n_true
TH1D * m_hist_Psi_n_true[6][n_b_bins]
Definition: CheckFlow_New_Minbias.h:59
TProfile::Fill
int Fill(double, double)
Definition: rootspy.cxx:523
CheckFlow_New::m_produceHistogram
bool m_produceHistogram
Definition: CheckFlow_New.h:38
CheckFlow_New_Minbias::m_profile_pt_dep
TProfile * m_profile_pt_dep[6][n_b_bins][n_etabin]
Definition: CheckFlow_New_Minbias.h:70
CheckFlow_New_Minbias::m_profile_pt_dep_reco
TProfile * m_profile_pt_dep_reco[6][n_b_bins][n_etabin]
Definition: CheckFlow_New_Minbias.h:72
LArG4FSStartPointFilter.particles
list particles
Definition: LArG4FSStartPointFilter.py:84
CheckFlow_New_Minbias::m_tesIO
TruthHelper::GenAccessIO * m_tesIO
Definition: CheckFlow_New_Minbias.h:81
CheckFlow_New_Minbias.CheckFlow_New_Minbias
CheckFlow_New_Minbias
Definition: CheckFlow_New_Minbias.py:51
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
CheckFlow_New_Minbias::m_rapcut_max
double m_rapcut_max
Definition: CheckFlow_New_Minbias.h:49
CheckFlow_New::m_bcut_min
double m_bcut_min
Definition: CheckFlow_New.h:40
CheckFlow_New_Minbias::n_ptbin
@ n_ptbin
Definition: CheckFlow_New_Minbias.h:53
CheckFlow_New_Minbias::m_hist_Psi_n_ebe_pt
TH1D * m_hist_Psi_n_ebe_pt[6][n_b_bins]
Definition: CheckFlow_New_Minbias.h:65
CheckFlow_New_Minbias::m_hist_vn_ebe_ID2
TH1D * m_hist_vn_ebe_ID2[6][n_b_bins]
Definition: CheckFlow_New_Minbias.h:68
ServiceHandle< ITHistSvc >
CheckFlow_New_Minbias::m_hist_vn_ebe
TH1D * m_hist_vn_ebe[6][n_b_bins]
Definition: CheckFlow_New_Minbias.h:66