11 std::cout<<
" Making layer-hit histo"<<std::endl;
12 std::vector<std::string> layerTags;
13 unsigned char lbits=15;
16 std::string lstring=
"";
17 for (
int i = 4; i < 8; i++) {
20 int tmpCh=!!((lbits << i) & 0x80);
21 std::string tmpSt=
"0";
27 layerTags.push_back(lstring);
32 std::vector<std::string> halfTags{
"",
"top",
"bot"};
33 std::vector<std::string> trkTags{
"pos",
"ele"};
34 std::vector<std::string> trkCombos;
35 std::vector<std::string>::iterator halfIter = halfTags.begin();
36 for(halfIter; halfIter < halfTags.end(); halfIter++){
37 std::string half=*halfIter;
38 std::vector<std::string>::iterator trkIter = trkTags.begin();
39 for(trkIter; trkIter < trkTags.end(); trkIter++){
40 std::string trk=*trkIter;
41 std::string comboStr=half+
"_"+trk;
45 std::cout<<
" splitting by "<<comboStr<<std::endl;
46 trkCombos.push_back(comboStr);
68 std::vector<std::string> layerTagsForV0{
"1111",
"0011",
"0111",
"1011"};
69 std::vector<std::string> trkLayerCombos;
70 std::vector<std::string>::iterator trkIter = trkCombos.begin();
71 for(trkIter;trkIter<trkCombos.end();trkIter++){
72 std::string trkSt=*trkIter;
73 std::vector<std::string>::iterator lIter = layerTagsForV0.begin();
74 for(lIter;lIter<layerTagsForV0.end();lIter++){
75 std::string l1St=*lIter;
76 std::vector<std::string>::iterator l2Iter = layerTagsForV0.begin();
77 for(l2Iter;l2Iter<layerTagsForV0.end();l2Iter++){
78 std::string l2St=*l2Iter;
79 std::string comboStr=
"pos"+l1St+
"_ele"+l2St+
"_"+trkSt;
80 trkLayerCombos.push_back(comboStr);
82 std::cout<<
" splitting by "<<comboStr<<std::endl;
89 std::vector<std::string> V0Combos{
"",
"top_pos",
"bot_pos"};
90 std::vector<std::string> v0LayerCombos;
91 std::vector<std::string>::iterator v0Iter = V0Combos.begin();
92 for(v0Iter;v0Iter<V0Combos.end();v0Iter++){
93 std::string v0St=*v0Iter;
94 std::vector<std::string>::iterator lIter = layerTagsForV0.begin();
95 for(lIter;lIter<layerTagsForV0.end();lIter++){
96 std::string l1St=*lIter;
97 std::vector<std::string>::iterator l2Iter = layerTagsForV0.begin();
98 for(l2Iter;l2Iter<layerTagsForV0.end();l2Iter++){
99 std::string l2St=*l2Iter;
100 std::string comboStr=
"pos"+l1St+
"_ele"+l2St+
"_"+v0St;
102 comboStr=
"pos"+l1St+
"_ele"+l2St;
104 std::cout<<
" splitting by "<<comboStr<<std::endl;
105 v0LayerCombos.push_back(comboStr);
140 double trkTimeOffset,
149 std::string half=
"top";
152 std::string posTag=half+
"_pos_";
156 std::string eleTag=half+
"_ele_";
162 Fill1DHisto(
"vtx_chi2_vc_h" ,vtx->getChi2(),weight);
167 Fill1DHisto(posTag+
"vtx_chi2_vc_h" ,vtx->getChi2(),weight);
168 Fill1DHisto(posTag+
"vtx_X_vc_h" ,vtx->getX(),weight);
169 Fill1DHisto(posTag+
"vtx_Y_vc_h" ,vtx->getY(),weight);
170 Fill1DHisto(posTag+
"vtx_Z_vc_h" ,vtx->getZ(),weight);
183 vtxPosSvt.SetX(vtx->getX());
184 vtxPosSvt.SetY(vtx->getY());
185 vtxPosSvt.SetZ(vtx->getZ());
187 vtxPosSvt.RotateY(-0.0305);
194 Fill1DHisto(
"vtx_sigma_X_vc_h",sqrt(vtx->getCovariance()[0]),weight);
195 Fill1DHisto(
"vtx_sigma_Y_vc_h",sqrt(vtx->getCovariance()[3]),weight);
196 Fill1DHisto(
"vtx_sigma_Z_vc_h",sqrt(vtx->getCovariance()[5]),weight);
197 Fill1DHisto(
"vtx_InvM_vc_h" ,vtx->getInvMass(),weight);
198 Fill1DHisto(
"vtx_InvMErr_Z_vc_h",vtx->getInvMassErr(),weight);
205 Fill1DHisto(posTag+
"vtx_sigma_X_vc_h",sqrt(vtx->getCovariance()[0]),weight);
206 Fill1DHisto(posTag+
"vtx_sigma_Y_vc_h",sqrt(vtx->getCovariance()[3]),weight);
207 Fill1DHisto(posTag+
"vtx_sigma_Z_vc_h",sqrt(vtx->getCovariance()[5]),weight);
208 Fill1DHisto(posTag+
"vtx_InvM_vc_h" ,vtx->getInvMass(),weight);
209 Fill1DHisto(posTag+
"vtx_InvMErr_Z_vc_h",vtx->getInvMassErr(),weight);
213 Fill1DHisto(posTag+
"vtx_p_vc_h" ,vtx->getP().Mag());
237 TLorentzVector p_ele;
241 TLorentzVector p_pos;
252 p_ele.RotateY(-0.0305);
253 p_pos.RotateY(-0.0305);
256 TLorentzVector p_beam(0.,0.,2.3,2.3);
257 TLorentzVector p_v0 = p_ele+p_pos;
258 TLorentzVector p_miss = p_beam - p_v0;
260 double thetax_v0_val = TMath::ATan2(p_v0.X(),p_v0.Z());
261 double thetay_v0_val = TMath::ATan2(p_v0.Y(),p_v0.Z());
263 double thetax_miss_val = TMath::ATan2(p_miss.X(),p_miss.Z());
264 double thetay_miss_val = TMath::ATan2(p_miss.Y(),p_miss.Z());
266 double pt_ele = p_ele.Pt();
267 double pt_pos = p_pos.Pt();
269 double pt_asym_val = (pt_ele-pt_pos) / (pt_ele+pt_pos);
280 Fill1DHisto(
"thetax_v0_vc_h",thetax_v0_val,weight);
281 Fill1DHisto(
"thetay_v0_vc_h",thetay_v0_val,weight);
282 Fill1DHisto(
"thetax_miss_vc_h",thetax_miss_val,weight);
283 Fill1DHisto(
"thetay_miss_vc_h",thetay_miss_val,weight);
288 Fill1DHisto(posTag+
"Psum_vc_h",p_ele.P() + p_pos.P());
290 Fill1DHisto(posTag+
"PtAsym_vc_h",pt_asym_val,weight);
292 Fill1DHisto(posTag+
"thetax_v0_vc_h",thetax_v0_val,weight);
293 Fill1DHisto(posTag+
"thetay_v0_vc_h",thetay_v0_val,weight);
294 Fill1DHisto(posTag+
"thetax_miss_vc_h",thetax_miss_val,weight);
295 Fill1DHisto(posTag+
"thetay_miss_vc_h",thetay_miss_val,weight);
320 Fill2DHisto(
"vtx_InvM_vtx_z_vc_hh",vtx->getInvMass(),vtx->getZ(),weight);
321 Fill2DHisto(posTag+
"vtx_InvM_vtx_z_vc_hh",vtx->getInvMass(),vtx->getZ(),weight);
330 if(fabs(vtx->getInvMass()-0.0925)<0.010){
344 std::string half=
"top";
346 if(track->getTanLambda()<0)
348 std::string tag=half+
"_"+trkname;
350 double d0 = track->getD0();
351 double z0 = track->getZ0();
352 Fill2DHisto(trkname+
"tanlambda_vs_phi0_tc_hh",track->getPhi(),track->getTanLambda(), weight);
353 Fill2DHisto(trkname+
"d0_vs_p_tc_hh",track->getP(),d0,weight);
354 Fill2DHisto(trkname+
"d0_vs_phi0_tc_hh",track->getPhi(),d0,weight);
355 Fill2DHisto(trkname+
"d0_vs_tanlambda_tc_hh",track->getTanLambda(),d0,weight);
357 Fill2DHisto(trkname+
"z0_vs_p_tc_hh",track->getP(),z0,weight);
358 Fill2DHisto(trkname+
"z0_vs_phi0_tc_hh",track->getPhi(),z0,weight);
359 Fill2DHisto(trkname+
"z0_vs_tanlambda_tc_hh",track->getTanLambda(),z0,weight);
361 Fill2DHisto(tag+
"tanlambda_vs_phi0_tc_hh",track->getPhi(),track->getTanLambda(), weight);
362 Fill2DHisto(tag+
"d0_vs_p_tc_hh",track->getP(),d0,weight);
363 Fill2DHisto(tag+
"d0_vs_phi0_tc_hh",track->getPhi(),d0,weight);
364 Fill2DHisto(tag+
"d0_vs_tanlambda_tc_hh",track->getTanLambda(),d0,weight);
366 Fill2DHisto(tag+
"z0_vs_p_tc_hh",track->getP(),z0,weight);
367 Fill2DHisto(tag+
"z0_vs_phi0_tc_hh",track->getPhi(),z0,weight);
368 Fill2DHisto(tag+
"z0_vs_tanlambda_tc_hh",track->getTanLambda(),z0,weight);
371 Fill2DHisto(
layerCode+trkname+
"tanlambda_vs_phi0_tc_hh",track->getPhi(),track->getTanLambda(), weight);
380 Fill2DHisto(
layerCode+tag+
"tanlambda_vs_phi0_tc_hh",track->getPhi(),track->getTanLambda(), weight);
395 double charge = (double) track->getCharge();
398 int n_hits_2d = track->getTrackerHitCount();
401 p_trk.SetXYZ(track->getMomentum()[0],track->getMomentum()[1],track->getMomentum()[2]);
402 std::string half=
"top";
404 if(track->getTanLambda()<0)
407 std::string tag=half+
"_"+trkname;
413 Fill1DHisto(trkname+
"d0_tc_h" ,track->getD0() ,weight);
414 Fill1DHisto(trkname+
"Phi_tc_h" ,track->getPhi() ,weight);
415 Fill1DHisto(trkname+
"Omega_tc_h" ,track->getOmega() ,weight);
416 Fill1DHisto(trkname+
"pT_tc_h" ,charge*track->getPt() ,weight);
417 Fill1DHisto(trkname+
"invpT_tc_h" ,charge/track->getPt() ,weight);
418 Fill1DHisto(trkname+
"TanLambda_tc_h",track->getTanLambda() ,weight);
419 Fill1DHisto(trkname+
"Z0_tc_h" ,track->getZ0() ,weight);
420 Fill1DHisto(trkname+
"Z0_over_TanLambda_tc_h",track->getZ0()/track->getTanLambda() ,weight);
421 Fill1DHisto(trkname+
"time_tc_h" ,track->getTrackTime()-trkTimeOffset ,weight);
422 Fill1DHisto(trkname+
"chi2_tc_h" ,track->getChi2() ,weight);
423 Fill1DHisto(trkname+
"chi2ndf_tc_h" ,track->getChi2Ndf() ,weight);
424 Fill1DHisto(trkname+
"nShared_tc_h" ,track->getNShared() ,weight);
425 Fill1DHisto(trkname+
"nHits_2d_tc_h" ,n_hits_2d ,weight);
429 Fill1DHisto(tag+
"d0_tc_h" ,track->getD0() ,weight);
430 Fill1DHisto(tag+
"Phi_tc_h" ,track->getPhi() ,weight);
431 Fill1DHisto(tag+
"Omega_tc_h" ,track->getOmega() ,weight);
432 Fill1DHisto(tag+
"pT_tc_h" ,-1*charge*track->getPt() ,weight);
433 Fill1DHisto(tag+
"invpT_tc_h" ,-1*charge/track->getPt() ,weight);
434 Fill1DHisto(tag+
"TanLambda_tc_h",track->getTanLambda() ,weight);
435 Fill1DHisto(tag+
"Z0_tc_h" ,track->getZ0() ,weight);
436 Fill1DHisto(tag+
"Z0_over_TanLambda_tc_h",track->getZ0()/track->getTanLambda() ,weight);
437 Fill1DHisto(tag+
"time_tc_h" ,track->getTrackTime()-trkTimeOffset ,weight);
438 Fill1DHisto(tag+
"chi2_tc_h" ,track->getChi2() ,weight);
439 Fill1DHisto(tag+
"chi2ndf_tc_h" ,track->getChi2Ndf() ,weight);
440 Fill1DHisto(tag+
"nShared_tc_h" ,track->getNShared() ,weight);
441 Fill1DHisto(tag+
"nHits_2d_tc_h" ,n_hits_2d ,weight);
451 Fill1DHisto(
layerCode+trkname+
"Z0_over_TanLambda_tc_h",track->getZ0()/track->getTanLambda() ,weight);
467 Fill1DHisto(
layerCode+tag+
"Z0_over_TanLambda_tc_h",track->getZ0()/track->getTanLambda() ,weight);
489 bool hasLayer4=
false;
490 for (
auto & layer : track->getHitLayers()) {
493 std::cout<<
"What...I already counted layer 4!"<<std::endl;
497 Fill1DHisto(trkname+
"layersHit_tc_h",layer,weight);
522 if (!track || !truth_track)
526 std::vector<double> trk_mom = track->getMomentum();
527 std::vector<double> trk_truth_mom = truth_track->
getMomentum();
529 double d0 = track->getD0();
530 double d0err = track->getD0Err();
531 double d0_truth = truth_track->
getD0();
532 double phi = track->getPhi();
533 double phi_truth = truth_track->
getPhi();
534 double phierr = track->getPhiErr();
535 double omega = track->getOmega();
536 double omega_truth = truth_track->
getOmega();
537 double omegaerr = track->getOmegaErr();
538 double tanLambda = track->getTanLambda();
540 double tanLambdaerr = track->getTanLambdaErr();
541 double z0 = track->getZ0();
542 double z0_truth = truth_track->
getZ0();
543 double z0err = track->getZ0Err();
544 double p = track->getP();
546 double invPt = -1.*(double) track->getCharge()/track->getPt();
547 double p_truth = truth_track->
getP();
548 double invPt_truth = -1*(double) track->getCharge()/truth_track->
getPt();
550 double diff_percent_invpT = ((invPt - invPt_truth) / invPt_truth) * 100.;
553 Fill1DHisto(trkname+
"d0_truth_res_h", d0 - d0_truth , weight);
554 Fill1DHisto(trkname+
"Phi_truth_res_h", phi - phi_truth , weight);
555 Fill1DHisto(trkname+
"Omega_truth_res_h", omega - omega_truth , weight);
556 Fill1DHisto(trkname+
"TanLambda_truth_res_h",tanLambda - tanLambda_truth , weight);
557 Fill1DHisto(trkname+
"Z0_truth_res_h", z0 - z0_truth , weight);
558 Fill1DHisto(trkname+
"p_truth_res_h", p - p_truth , weight);
559 Fill1DHisto(trkname+
"invpT_truth_res_h", invPt - invPt_truth , weight);
560 Fill1DHisto(trkname+
"invpT_truth_res_percent_h", diff_percent_invpT , weight);
561 Fill1DHisto(trkname+
"px_truth_res_h", trk_mom[0] - trk_truth_mom[0] , weight);
562 Fill1DHisto(trkname+
"py_truth_res_h", trk_mom[1] - trk_truth_mom[1] , weight);
563 Fill1DHisto(trkname+
"pz_truth_res_h", trk_mom[2] - trk_truth_mom[2] , weight);
566 Fill1DHisto(trkname+
"d0_truth_pull_h", (d0 - d0_truth) / d0err, weight);
567 Fill1DHisto(trkname+
"Phi_truth_pull_h", (phi - phi_truth) / phierr , weight);
568 Fill1DHisto(trkname+
"Omega_truth_pull_h", (omega - omega_truth) / omegaerr, weight);
569 Fill1DHisto(trkname+
"TanLambda_truth_pull_h",(tanLambda - tanLambda_truth) / tanLambdaerr, weight);
570 Fill1DHisto(trkname+
"Z0_truth_pull_h", (z0 - z0_truth) / z0err, weight);
715 Track* eleTrk=ele.second;
717 Track* posTrk=posOrGamma.second;
719 std::string half=
"top";
722 std::string eleTag=half+
"_ele_";
727 std::string posTag=half+
"_pos_";
734 double ele_cluTime=eleClu.
getTime()-calTimeOffset;
735 double pos_cluTime=posClu.
getTime()-calTimeOffset;
736 double ele_trkTime=eleTrk->
getTrackTime()-trkTimeOffset;
737 double pos_trkTime=posTrk->
getTrackTime()-trkTimeOffset;
752 double ele_clu_trk_deltaX=ele_cluX-ele_trkX;
753 double pos_clu_trk_deltaX=pos_cluX-pos_trkX;
755 double ele_clu_trk_deltaY=ele_cluY-ele_trkY;
756 double pos_clu_trk_deltaY=pos_cluY-pos_trkY;
761 Fill1DHisto(
"ele_clu_trk_deltaX_tc_h",ele_clu_trk_deltaX,weight);
762 Fill1DHisto(
"ele_clu_trk_deltaY_tc_h",ele_clu_trk_deltaY,weight);
770 Fill2DHisto(
"ele_clu_trk_deltaX_vs_cluX_hc_hh",ele_cluX,ele_clu_trk_deltaX,weight);
771 Fill2DHisto(
"ele_clu_trk_deltaY_vs_cluX_hc_hh",ele_cluX,ele_clu_trk_deltaY,weight);
772 Fill2DHisto(
"ele_cluY_vs_cluX_hc_hh",ele_cluX,ele_cluY,weight);
776 Fill1DHisto(eleTag+
"clu_trk_deltaX_tc_h",ele_clu_trk_deltaX,weight);
777 Fill1DHisto(eleTag+
"clu_trk_deltaY_tc_h",ele_clu_trk_deltaY,weight);
784 Fill2DHisto(eleTag+
"clu_trk_deltaX_vs_cluX_hc_hh",ele_cluX,ele_clu_trk_deltaX,weight);
785 Fill2DHisto(eleTag+
"clu_trk_deltaY_vs_cluX_hc_hh",ele_cluX,ele_clu_trk_deltaY,weight);
786 Fill2DHisto(eleTag+
"cluY_vs_cluX_hc_hh",ele_cluX,ele_cluY,weight);
812 Fill1DHisto(
"pos_clu_trk_deltaX_tc_h",pos_clu_trk_deltaX,weight);
813 Fill1DHisto(
"pos_clu_trk_deltaY_tc_h",pos_clu_trk_deltaY,weight);
818 Fill1DHisto(posTag+
"clu_trk_deltaX_tc_h",pos_clu_trk_deltaX,weight);
819 Fill1DHisto(posTag+
"clu_trk_deltaY_tc_h",pos_clu_trk_deltaY,weight);
840 Fill2DHisto(
"pos_cluY_vs_cluX_hc_hh",pos_cluX,pos_cluY,weight);
841 Fill2DHisto(
"pos_clu_trk_deltaX_vs_cluX_hc_hh",pos_cluX,pos_clu_trk_deltaX,weight);
842 Fill2DHisto(
"pos_clu_trk_deltaY_vs_cluX_hc_hh",pos_cluX,pos_clu_trk_deltaY,weight);
847 Fill2DHisto(posTag+
"cluY_vs_cluX_hc_hh",pos_cluX,pos_cluY,weight);
848 Fill2DHisto(posTag+
"clu_trk_deltaX_vs_cluX_hc_hh",pos_cluX,pos_clu_trk_deltaX,weight);
849 Fill2DHisto(posTag+
"clu_trk_deltaY_vs_cluX_hc_hh",pos_cluX,pos_clu_trk_deltaY,weight);
982 foundOgCluster=false;
983 foundNewCluster=false;
984 foundSameCluster=false;
985 if(posClu.getTime()>-300)
987 if(pos_minDistCluIndex>-1){
988 foundNewCluster=true;
989 CalCluster* pos_myBestClu=clusterList->at(pos_minDistCluIndex);
990 //see if this cluster is the same as cluster found by hps-java
991 double clX=pos_myBestClu->getPosition().at(0);
992 double clY=pos_myBestClu->getPosition().at(1);
993 double clE=pos_myBestClu->getEnergy();
994 double clTime=pos_myBestClu->getTime()-calTimeOffset;;
995 // if(clTime!= pos_cluTime){
996 if(clTime!= pos_cluTime&& !foundOgCluster){ //only plot if there was no match
997 //found a different cluster...plot new parameters
998 double new_deltaX=clX-pos_trkX;
999 double new_deltaY=clY-pos_trkY;
1000 Fill1DHisto("pos_new_cl_time_tc_h",clTime,weight);
1001 Fill1DHisto("pos_new_cl_ene_tc_h",clE,weight);
1002 Fill1DHisto("pos_new_clu_trk_deltaX_tc_h",new_deltaX,weight);
1003 Fill1DHisto("pos_new_clu_trk_deltaY_tc_h",new_deltaY,weight);
1004 Fill1DHisto("pos_new_EOverp_tc_h",clE/ppos,weight);
1006 Fill1DHisto(layerCode+"pos_new_cl_time_tc_h",clTime,weight);
1007 Fill1DHisto(layerCode+"pos_new_cl_ene_tc_h",clE,weight);
1008 Fill1DHisto(layerCode+"pos_new_clu_trk_deltaX_tc_h",new_deltaX,weight);
1009 Fill1DHisto(layerCode+"pos_new_clu_trk_deltaY_tc_h",new_deltaY,weight);
1010 Fill1DHisto(layerCode+"pos_new_EOverp_tc_h",clE/ppos,weight);
1012 Fill2DHisto("pos_new_clu_trk_deltaX_vs_cluX_hc_hh",clX,new_deltaX,weight);
1013 Fill2DHisto("pos_new_clu_trk_deltaY_vs_cluX_hc_hh",clX,new_deltaY,weight);
1014 Fill2DHisto("pos_new_EOverp_vs_cluX_hc_hh",clX,clE/ppos,weight);
1015 Fill2DHisto("pos_new_cluY_vs_cluX_hc_hh",clX,clY,weight);
1017 Fill1DHisto(posTag+"new_cl_time_tc_h",clTime,weight);
1018 Fill1DHisto(posTag+"new_cl_ene_tc_h",clE,weight);
1019 Fill1DHisto(posTag+"new_clu_trk_deltaX_tc_h",new_deltaX,weight);
1020 Fill1DHisto(posTag+"new_clu_trk_deltaY_tc_h",new_deltaY,weight);
1021 Fill1DHisto(posTag+"new_EOverp_tc_h",clE/ppos,weight);
1023 Fill1DHisto(layerCode+posTag+"new_cl_time_tc_h",clTime,weight);
1024 Fill1DHisto(layerCode+posTag+"new_cl_ene_tc_h",clE,weight);
1025 Fill1DHisto(layerCode+posTag+"new_clu_trk_deltaX_tc_h",new_deltaX,weight);
1026 Fill1DHisto(layerCode+posTag+"new_clu_trk_deltaY_tc_h",new_deltaY,weight);
1027 Fill1DHisto(layerCode+posTag+"new_EOverp_tc_h",clE/ppos,weight);
1029 Fill2DHisto(posTag+"new_clu_trk_deltaX_vs_cluX_hc_hh",clX,new_deltaX,weight);
1030 Fill2DHisto(posTag+"new_clu_trk_deltaY_vs_cluX_hc_hh",clX,new_deltaY,weight);
1031 Fill2DHisto(posTag+"new_EOverp_vs_cluX_hc_hh",clX,clE/ppos,weight);
1032 Fill2DHisto(posTag+"new_cluY_vs_cluX_hc_hh",clX,clY,weight);
1035 foundSameCluster=true;