10 std::vector<std::string> trkTypes;
11 trkTypes.push_back(
"topEle");
12 trkTypes.push_back(
"botEle");
13 trkTypes.push_back(
"topPos");
14 trkTypes.push_back(
"botPos");
15 std::string h_name =
"";
16 for (
auto trkType : trkTypes)
20 h_name =
m_name+
"_"+trkType+
"_"+hist.key();
25 std::size_t found = (hist.key()).find_last_of(
"_");
26 std::string extension = hist.key().substr(found+1);
28 if (extension ==
"h") {
29 histos1d[h_name] =
plot1D(h_name, trkType+
" "+std::string(hist.value().at(
"xtitle")),
30 hist.value().at(
"bins"),
31 hist.value().at(
"minX"),
32 hist.value().at(
"maxX"));
34 std::string ytitle = hist.value().at(
"ytitle");
36 histos1d[h_name]->GetYaxis()->SetTitle(ytitle.c_str());
38 if (hist.value().contains(
"labels")) {
39 std::vector<std::string> labels = hist.value().at(
"labels").get<std::vector<std::string> >();
41 if (labels.size() < hist.value().at(
"bins")) {
42 std::cout<<
"Cannot apply labels to histogram:"<<h_name<<std::endl;
45 for (
int i = 1; i<=hist.value().at(
"bins");++i)
46 histos1d[h_name]->GetXaxis()->SetBinLabel(i,labels[i-1].c_str());
51 else if (extension ==
"hh") {
53 trkType+
" "+std::string(hist.value().at(
"xtitle")),hist.value().at(
"binsX"),hist.value().at(
"minX"),hist.value().at(
"maxX"),
54 hist.value().at(
"ytitle"),hist.value().at(
"binsY"),hist.value().at(
"minY"),hist.value().at(
"maxY"));
57 std::cout<<
"Error in histo definition "<<h_name<<std::endl;
111 TLorentzVector p_ele;
115 TLorentzVector p_pos;
156 p_ele.RotateY(-0.0305);
157 p_pos.RotateY(-0.0305);
160 TLorentzVector p_beam(0.,0.,2.3,2.3);
161 TLorentzVector p_v0 = p_ele+p_pos;
162 TLorentzVector p_miss = p_beam - p_v0;
164 double thetax_v0_val = TMath::ATan2(p_v0.X(),p_v0.Z());
165 double thetax_pos_val = TMath::ATan2(p_pos.X(),p_pos.Z());
167 double thetay_miss_val = TMath::ATan2(p_miss.Y(),p_miss.Z());
168 double thetay_pos_val = TMath::ATan2(p_pos.Y(),p_pos.Z());
170 double pt_ele = p_ele.Pt();
171 double pt_pos = p_pos.Pt();
173 double pt_asym_val = (pt_ele-pt_pos) / (pt_ele+pt_pos);
175 double thetay_diff_val;
177 if (thetay_pos_val>0) {
178 thetay_diff_val = thetay_miss_val - thetay_pos_val;
181 thetay_diff_val = thetay_pos_val - thetay_miss_val;
191 Fill2DHisto(
"InvM_eleP_hh", p_ele.P(), vtx->getInvMass(),weight);
192 Fill2DHisto(
"InvM_posP_hh", p_pos.P(), vtx->getInvMass(), weight);
193 Fill1DHisto(
"Psum_h",p_ele.P() + p_pos.P(),weight);
198 Fill1DHisto(
"thetay_miss_h",thetay_miss_val,weight);
199 Fill1DHisto(
"thetay_diff_h",thetay_diff_val,weight);
208 double d0 = track->getD0();
209 double z0 = track->getZ0();
211 Fill2DHisto(trkname+
"d0_vs_p_hh",track->getP(),d0,weight);
212 Fill2DHisto(trkname+
"d0_vs_phi0_hh",track->getPhi(),d0,weight);
213 Fill2DHisto(trkname+
"d0_vs_tanlambda_hh",track->getTanLambda(),d0,weight);
215 Fill2DHisto(trkname+
"z0_vs_p_hh",track->getP(),z0,weight);
216 Fill2DHisto(trkname+
"phi0_vs_p_hh",track->getP(),track->getPhi(),weight);
217 Fill2DHisto(trkname+
"z0_vs_phi0_hh",track->getPhi(),z0,weight);
218 Fill2DHisto(trkname+
"z0_vs_tanlambda_hh",track->getTanLambda(),z0,weight);
220 Fill2DHisto(trkname+
"TanLambda_vs_Phi_hh" ,track->getPhi() , track->getTanLambda() ,weight);
221 Fill2DHisto(trkname+
"p_vs_Phi_hh" ,track->getPhi() , track->getP() ,weight);
222 Fill2DHisto(trkname+
"p_vs_TanLambda_hh" ,track->getTanLambda() , track->getP() ,weight);
230 double charge = (double) track->getCharge();
233 int n_hits_2d = track->getTrackerHitCount();
234 if (!track->isKalmanTrack())
237 Fill1DHisto(trkname+
"d0_h" ,track->getD0() ,weight);
238 Fill1DHisto(trkname+
"Phi_h" ,track->getPhi() ,weight);
239 Fill1DHisto(trkname+
"Omega_h" ,track->getOmega() ,weight);
240 Fill1DHisto(trkname+
"pT_h" ,-1*charge*track->getPt(),weight);
242 Fill1DHisto(trkname+
"invpT_h" ,-1*charge/track->getPt(),weight);
243 Fill1DHisto(trkname+
"TanLambda_h",track->getTanLambda() ,weight);
244 Fill1DHisto(trkname+
"Z0_h" ,track->getZ0() ,weight);
245 Fill1DHisto(trkname+
"Z0oTanLambda_h",track->getZ0()/track->getTanLambda() ,weight);
246 Fill1DHisto(trkname+
"time_h" ,track->getTrackTime() ,weight);
247 Fill1DHisto(trkname+
"chi2_h" ,track->getChi2() ,weight);
248 Fill1DHisto(trkname+
"chi2ndf_h" ,track->getChi2Ndf() ,weight);
249 Fill1DHisto(trkname+
"nShared_h" ,track->getNShared() ,weight);
250 Fill1DHisto(trkname+
"nHits_2d_h" ,n_hits_2d ,weight);
251 Fill1DHisto(trkname+
"track_xpos_h",track->getPosition().at(0) ,weight);
252 Fill1DHisto(trkname+
"track_ypos_h",track->getPosition().at(1) ,weight);
253 Fill1DHisto(trkname+
"track_zpos_h",track->getPosition().at(2) ,weight);
254 Fill1DHisto(trkname+
"xpos_at_ecal_h",track->getPositionAtEcal().at(0) ,weight);
255 Fill1DHisto(trkname+
"ypos_at_ecal_h",track->getPositionAtEcal().at(1) ,weight);
256 Fill1DHisto(trkname+
"zpos_at_ecal_h",track->getPositionAtEcal().at(2) ,weight);
259 if(track->getTanLambda() > 0.0)
260 Fill1DHisto(trkname+
"top_track_z0_h", track->getZ0(), weight);
262 Fill1DHisto(trkname+
"bot_track_z0_h", track->getZ0(), weight);
265 Fill1DHisto(trkname+
"d0_err_h" ,track->getD0Err() ,weight);
266 Fill1DHisto(trkname+
"Phi_err_h" ,track->getPhiErr() ,weight);
267 Fill1DHisto(trkname+
"Omega_err_h" ,track->getOmegaErr() ,weight);
268 Fill1DHisto(trkname+
"TanLambda_err_h",track->getTanLambdaErr() ,weight);
269 Fill1DHisto(trkname+
"Z0_err_h" ,track->getZ0Err() ,weight);
271 for (
int ihit=0; ihit<track->getHitLayers().size();++ihit)
273 int hit2d = track->getHitLayers().at(ihit);
274 Fill1DHisto(trkname+
"hit_lay_h",(
float) hit2d ,weight);
279 if (track->getNShared() == 0)
283 if (track->getSharedLy0())
285 if (track->getSharedLy1())
287 if (track->getSharedLy0() && track->getSharedLy1())
289 if (!track->getSharedLy0() && !track->getSharedLy1())
293 if (track -> is345Seed())
295 if (track-> is456Seed())
297 if (track-> is123SeedC4())
299 if (track->is123SeedC5())
301 if (track->isMatchedTrack())
303 if (track->isGBLTrack())
307 Fill1DHisto(trkname+
"type_h",track->getType(),weight);
313 Fill2DHisto(
"vtx_XY_hh",vtx->getX(),vtx->getY(),weight);
319 vtxPosSvt.SetX(vtx->getX());
320 vtxPosSvt.SetY(vtx->getY());
321 vtxPosSvt.SetZ(vtx->getZ());
323 vtxPosSvt.RotateY(-0.0305);
325 Fill2DHisto(
"vtx_XY_svt_hh",vtxPosSvt.X(),vtxPosSvt.Y(),weight);
332 Fill1DHisto(
"vtx_sigma_X_h",sqrt(vtx->getCovariance()[0]),weight);
333 Fill1DHisto(
"vtx_sigma_Y_h",sqrt(vtx->getCovariance()[3]),weight);
334 Fill1DHisto(
"vtx_sigma_Z_h",sqrt(vtx->getCovariance()[5]),weight);
335 Fill1DHisto(
"vtx_InvM_h" ,vtx->getInvMass(),weight);
336 Fill1DHisto(
"vtx_InvMErr_Z_h",vtx->getInvMassErr(),weight);
359 if (!track || !truth_track)
363 std::vector<double> trk_mom = track->getMomentum();
364 std::vector<double> trk_truth_mom = truth_track->
getMomentum();
366 double d0 = track->getD0();
367 double d0err = track->getD0Err();
368 double d0_truth = truth_track->
getD0();
369 double phi = track->getPhi();
370 double phi_truth = truth_track->
getPhi();
371 double phierr = track->getPhiErr();
372 double omega = track->getOmega();
373 double omega_truth = truth_track->
getOmega();
374 double omegaerr = track->getOmegaErr();
375 double tanLambda = track->getTanLambda();
377 double tanLambdaerr = track->getTanLambdaErr();
378 double z0 = track->getZ0();
379 double z0_truth = truth_track->
getZ0();
380 double z0err = track->getZ0Err();
381 double p = track->getP();
383 double invPt = -1.*(double) track->getCharge()/track->getPt();
384 double p_truth = truth_track->
getP();
385 double invPt_truth = -1*(double) track->getCharge()/truth_track->
getPt();
387 double diff_percent_invpT = ((invPt - invPt_truth) / invPt_truth) * 100.;
390 Fill1DHisto(trkname+
"d0_truth_res_h", d0 - d0_truth , weight);
391 Fill1DHisto(trkname+
"Phi_truth_res_h", phi - phi_truth , weight);
392 Fill1DHisto(trkname+
"Omega_truth_res_h", omega - omega_truth , weight);
393 Fill1DHisto(trkname+
"TanLambda_truth_res_h",tanLambda - tanLambda_truth , weight);
394 Fill1DHisto(trkname+
"Z0_truth_res_h", z0 - z0_truth , weight);
395 Fill1DHisto(trkname+
"p_truth_res_h", p - p_truth , weight);
396 Fill1DHisto(trkname+
"invpT_truth_res_h", invPt - invPt_truth , weight);
397 Fill1DHisto(trkname+
"invpT_truth_res_percent_h", diff_percent_invpT , weight);
398 Fill1DHisto(trkname+
"px_truth_res_h", trk_mom[0] - trk_truth_mom[0] , weight);
399 Fill1DHisto(trkname+
"py_truth_res_h", trk_mom[1] - trk_truth_mom[1] , weight);
400 Fill1DHisto(trkname+
"pz_truth_res_h", trk_mom[2] - trk_truth_mom[2] , weight);
403 Fill1DHisto(trkname+
"d0_truth_pull_h", (d0 - d0_truth) / d0err, weight);
404 Fill1DHisto(trkname+
"Phi_truth_pull_h", (phi - phi_truth) / phierr , weight);
405 Fill1DHisto(trkname+
"Omega_truth_pull_h", (omega - omega_truth) / omegaerr, weight);
406 Fill1DHisto(trkname+
"TanLambda_truth_pull_h",(tanLambda - tanLambda_truth) / tanLambdaerr, weight);
407 Fill1DHisto(trkname+
"Z0_truth_pull_h", (z0 - z0_truth) / z0err, weight);
419 vtxPosSvt.SetX(vtx->getX());
420 vtxPosSvt.SetY(vtx->getY());
421 vtxPosSvt.SetZ(vtx->getZ());
423 vtxPosSvt.RotateY(-0.0305);
426 double vtxP = vtx->getP().Mag();
428 Fill2DHisto(
"vtx_InvM_vtx_z_hh",vtx->getInvMass(),vtx->getZ(),weight);
429 Fill2DHisto(
"vtx_InvM_vtx_svt_z_hh",vtx->getInvMass(),vtxPosSvt.Z(),weight);
430 Fill2DHisto(
"vtx_p_svt_z_hh",vtxP,vtxPosSvt.Z(),weight);
431 Fill2DHisto(
"vtx_p_svt_x_hh",vtxP,vtxPosSvt.X(),weight);
432 Fill2DHisto(
"vtx_p_svt_y_hh",vtxP,vtxPosSvt.Y(),weight);
434 Fill2DHisto(
"vtx_svt_y_svt_z_hh",vtxPosSvt.Y(),vtxPosSvt.Z(),weight);
436 Fill2DHisto(
"vtx_p_sigmaZ_hh",vtxP,vtx->getCovariance()[5],weight);
437 Fill2DHisto(
"vtx_p_sigmaX_hh",vtxP,vtx->getCovariance()[3],weight);
438 Fill2DHisto(
"vtx_p_sigmaY_hh",vtxP,vtx->getCovariance()[0],weight);
TH2F * plot2D(std::string name, std::string xtitle, int nbinsX, float xmin, float xmax, std::string ytitle, int nbinsY, float ymin, float ymax)
description
CalCluster getCluster() const