54 StatusCode
result = StatusCode::SUCCESS;
56 ATH_MSG_INFO(
">>> CheckFlow_New_Minbias from Initialize");
60 CHECK( rootHistSvc.retrieve() );
61 std::string histPath =
"/FlowOutPut/";
62 std::vector<TH1*> hist_vec;
63 char name[100]{},name1[100]{};
66 for (
int ihar=0;ihar<6;ihar++){
67 for(
int ib_imp=0;ib_imp<
n_b_bins;ib_imp++){
69 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};
72 const float eta_bin_max = 4.0;
74 sprintf(name,
"hist_Psi_%d_true_b%d",ihar+1,ib_imp);
75 sprintf(name1,
"Truth Psi_{%d} distribution;%dPsi_{%d} Truth;events",ihar+1,ihar+1,ihar+1);
79 sprintf(name,
"hist_Psi_%d_reco_b%d",ihar+1,ib_imp);
80 sprintf(name1,
"Reconstructed Psi_{%d} distribution;%dPsi_{%d} Reco;events",ihar+1,ihar+1,ihar+1);
85 for (
int ihar2=0;ihar2<6;ihar2++){
86 int ihar_i=ihar*6+ihar2;
88 sprintf(name,
"hist_Psi_corr_true_b%d_%d_%d",ib_imp,ihar+1,ihar2+1);
89 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 sprintf(name,
"hist_Psi_corr_reco_%d_%d_%d",ib_imp,ihar+1,ihar2+1);
94 sprintf(name1,
"reco Psi_{%d} -Psi_{%d};%dPsi_{%d} -%dPsi_{%d} ;events",ihar+1,ihar2+1,ihar+1,ihar+1,ihar2+1,ihar2+1);
104 sprintf(name,
"hist_v%d_b%d_ebe",ihar+1,ib_imp);
105 sprintf(name1,
"v%d;v%d;events",ihar+1,ihar+1);
106 m_hist_vn_ebe [ihar][ib_imp]=
new TH1D (name,name1,1000,-0.5,0.5);
109 sprintf(name,
"hist_v%d_b%d_ebe_ID1",ihar+1,ib_imp);
110 sprintf(name1,
"v%d;v%d;events",ihar+1,ihar+1);
112 sprintf(name,
"hist_v%d_b%d_ebe_ID2",ihar+1,ib_imp);
117 sprintf(name ,
"hist_Psi%d_b%d_ebe",ihar+1,ib_imp);
118 sprintf(name1,
"%d#Delta#Psi;%d(#Psi_{reco}-#Psi_{Truth});events",ihar+1,ihar+1);
122 sprintf(name ,
"hist_Psi%d_b%d_ebe_pt",ihar+1,ib_imp);
123 sprintf(name1,
"%d#Delta#Psi (pT weighted);%d(#Psi_{reco}-#Psi_{Truth});events",ihar+1,ihar+1);
133 for(
int ieta=0;ieta<
n_etabin;ieta++){
134 sprintf(name ,
"profile_pt_dep_%d_eta%d_b%d" ,ihar+1,ieta,ib_imp);
135 sprintf(name1,
"v%d vs pT (eta%d);pT;v%d",ihar+1,ieta,ihar+1);
140 for(
int ipt=0;ipt<
n_ptbin;ipt++){
141 sprintf(name ,
"profile_eta_dep_%d_pt%d_b%d",ihar+1,ipt,ib_imp);
142 sprintf(name1,
"v%d vs #eta; (ipt%d)#eta;v%d",ihar+1,ipt,ihar+1);
148 for(
int ieta=0;ieta<
n_etabin;ieta++){
149 sprintf(name ,
"profile_pt_dep_reco_%d_eta%d_b%d",ihar+1,ieta,ib_imp);
150 sprintf(name1,
"v%d vs pT (eta%d);pT;v%d",ihar+1,ieta,ihar+1);
156 for(
int ipt=0;ipt<
n_ptbin;ipt++){
157 sprintf(name ,
"profile_eta_dep_reco_%d_pt%d_b%d",ihar+1,ipt,ib_imp);
158 sprintf(name1,
"v%d vs #eta (pt%d);#eta;v%d",ihar+1,ipt,ihar+1);
166 for(
int ipt=0;ipt<
n_ptbin;ipt++){
167 for(
int ieta=0;ieta<
n_etabin;ieta++){
168 sprintf(name ,
"profile_b_dep_%d_pt%d_eta%d",ihar+1,ipt,ieta);
169 sprintf(name1,
"v%d vs cent ;cent;v%d",ihar+1,ihar+1);
173 sprintf(name ,
"profile_b_dep_reco_%d_pt%d_eta%d",ihar+1,ipt,ieta);
174 sprintf(name1,
"v%d vs cent ;cent;v%d",ihar+1,ihar+1);
180 sprintf(name,
"profile_resolution_%d",ihar+1);
186 for(
auto& hist: hist_vec){
187 CHECK(rootHistSvc->regHist(histPath+hist->GetName(),hist));
188 hist->GetXaxis()->CenterTitle();
189 hist->GetYaxis()->CenterTitle();
203 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};
204 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};
205 const float eta_bin_max = 4.0;
209 CHECK(
evtStore()->retrieve(hijing_pars,
"Hijing_event_params"));
210 float b = hijing_pars->
get_b();
211 float Psi_n[6]{},Psi_n_reco[6]{};
212 for(
int ihar=0;ihar<6;ihar++){Psi_n[ihar]=hijing_pars->
get_psi(ihar+1);}
221 for(
int ib=0;ib<
n_b_bins;ib++){
if(b<b_bin_vals[ib+1]) {ib_imp=ib;
break;}}
222 if(ib_imp<0)
return StatusCode::SUCCESS;
223 if(ib_imp==0) {std::cout<<
"AAAAAAAAAAAAAAAAAAAA "<<b<<std::endl;}
226 if(b<m_bcut_min || b>
m_bcut_max)
return StatusCode::SUCCESS;
229 double ngenerated_pos = 0,ngenerated_pt_pos=0;
230 double ngenerated_neg = 0,ngenerated_pt_neg=0;
231 double cos_n_pos[6]{},sin_n_pos[6]{},cos_n_pt_pos[6]{},sin_n_pt_pos[6]{};
232 double cos_n_neg[6]{},sin_n_neg[6]{},cos_n_pt_neg[6]{},sin_n_pt_neg[6]{};
233 double cos_ID1[6]{},sin_ID1[6]{},tot_ID1=0.0;
234 double cos_ID2[6]{},sin_ID2[6]{},tot_ID2=0.0;
238 std::vector<HepMC::ConstGenParticlePtr> particles;
241 for (
auto pitr: particles) {
242 int pid = pitr->pdg_id();
243 int p_stat = pitr->status();
244 double pt = pitr->momentum().perp();
245 double rapid = pitr->momentum().pseudoRapidity();
246 double phi = pitr->momentum().phi();
248 <<
" Eta = " << rapid <<
" Phi = " <<
phi);
255 for(
int ihar=0;ihar<6;ihar++){
256 float temp=(ihar+1)*(
phi-Psi_n[ihar]);
258 int ieta= (int)(std::abs(rapid)*
n_etabin/eta_bin_max);
262 float temp_pt=pt/1000;
263 for(
int ipt=0;ipt<
n_ptbin;ipt++){
264 if(temp_pt<pt_binvals[ipt+1]){
271 if( rapid >3.2 && rapid< 4.9){
272 cos_n_pos[ihar]+=std::cos( (ihar+1)*
phi);
273 sin_n_pos[ihar]+=std::sin( (ihar+1)*
phi);
276 cos_n_pt_pos[ihar]+=pt*cos( (ihar+1)*
phi);
277 sin_n_pt_pos[ihar]+=pt*sin( (ihar+1)*
phi);
278 ngenerated_pt_pos +=pt;
280 if( rapid <-3.2 && rapid >-4.9){
281 cos_n_neg[ihar]+=std::cos( (ihar+1)*
phi);
282 sin_n_neg[ihar]+=std::sin( (ihar+1)*
phi);
285 cos_n_pt_neg[ihar]+=pt*std::cos( (ihar+1)*
phi);
286 sin_n_pt_neg[ihar]+=pt*std::sin( (ihar+1)*
phi);
287 ngenerated_pt_neg +=pt;
293 if(std::abs(pt)>=500){
295 for(
int ihar=0;ihar<6;ihar++){
296 cos_ID1[ihar]+=cos((ihar+1)*
phi);
297 sin_ID1[ihar]+=sin((ihar+1)*
phi);
302 for(
int ihar=0;ihar<6;ihar++){
303 cos_ID2[ihar]+=cos((ihar+1)*
phi);
304 sin_ID2[ihar]+=sin((ihar+1)*
phi);
311 for(
int ihar=0;ihar<6;ihar++){
313 double temp1= std::sqrt(cos_ID1[ihar]*cos_ID1[ihar] + sin_ID1[ihar]*sin_ID1[ihar])/tot_ID1;
317 double temp2= std::sqrt(cos_ID2[ihar]*cos_ID2[ihar] + sin_ID2[ihar]*sin_ID2[ihar])/tot_ID2;
325 float cos_n[6]{},sin_n[6]{},cos_n_pt[6]{},sin_n_pt[6]{};
326 float Psi_n_reco_pos[6]{},Psi_n_reco_neg[6]{};
327 const auto total = ngenerated_pos+ngenerated_neg;
328 const auto nTotalPt = ngenerated_pt_pos+ngenerated_pt_neg;
329 if ((total != 0) and (nTotalPt != 0))[[
likely]]{
330 for(
int ihar=0;ihar<6;ihar++){
332 cos_n[ihar] = ( cos_n_pos[ihar]+ cos_n_neg[ihar] ) / total;
334 sin_n[ihar] = ( sin_n_pos[ihar]+ sin_n_neg[ihar] ) / total;
336 float psi_reco=std::atan2(sin_n[ihar],cos_n[ihar])/(ihar+1);
338 m_hist_vn_ebe [ihar][ib_imp]->Fill(std::sqrt(cos_n[ihar]*cos_n[ihar] +sin_n[ihar]*sin_n[ihar] ));
340 Psi_n_reco_pos[ihar]=std::atan2(sin_n_pos[ihar],cos_n_pos[ihar])/ (ihar+1);
341 Psi_n_reco_neg[ihar]=std::atan2(sin_n_neg[ihar],cos_n_neg[ihar])/ (ihar+1);
342 Psi_n_reco [ihar]=psi_reco;
345 cos_n_pt[ihar] = ( cos_n_pt_pos[ihar]+ cos_n_pt_neg[ihar] ) / nTotalPt;
347 sin_n_pt[ihar] = ( sin_n_pt_pos[ihar]+ sin_n_pt_neg[ihar] ) / nTotalPt;
349 psi_reco=std::atan2(sin_n_pt[ihar],cos_n_pt[ihar])/(ihar+1);
355 for(
int ihar=0;ihar<6;ihar++){
360 for(
int ihar2=0;ihar2<6;ihar2++){
361 psi1=(ihar+1)*Psi_n[ihar];psi2=(ihar2+1)*Psi_n[ihar2];
362 m_hist_psi_corr_true[ihar*6+ihar2][ib_imp]->Fill( std::atan2( std::sin(psi1-psi2),std::cos(psi1-psi2) ) );
364 psi1=(ihar+1)*Psi_n_reco[ihar];psi2=(ihar2+1)*Psi_n_reco[ihar2];
365 m_hist_psi_corr_reco[ihar*6+ihar2][ib_imp]->Fill( std::atan2( std::sin(psi1-psi2),std::cos(psi1-psi2) ) );
374 for(
int ihar=0;ihar<6;ihar++){
375 m_profile_resolution[ihar]->Fill( ib_imp, cos( (ihar+1) * (Psi_n_reco_pos[ihar] - Psi_n_reco_neg[ihar]) ) );
376 if(ib_imp==0) {std::cout<<
"i11111111111111111111 "<<b<<std::endl;}
378 for (
auto pitr: particles) {
379 double pt = pitr->momentum().perp();
380 double rapid = pitr->momentum().pseudoRapidity();
381 double phi = pitr->momentum().phi();
385 for(
int ihar=0;ihar<6;ihar++){
386 float temp=(ihar+1)*(
phi-Psi_n_reco_pos[ihar]);
387 if(rapid>0) temp=(ihar+1)*(
phi-Psi_n_reco_neg[ihar]);
390 int ieta= (int)(std::abs(rapid)*
n_etabin/eta_bin_max);
393 float temp_pt=pt/1000;
394 for(
int ipt=0;ipt<
n_ptbin;ipt++){
395 if(temp_pt<pt_binvals[ipt+1]){
405 return StatusCode::SUCCESS;