2#include "TLorentzVector.h"
23 bool hasElectronTrack=
false;
24 bool hasPositronTrack=
false;
26 hasElectronTrack=
true;
28 hasPositronTrack=
true;
32 std::cout<<
"Oops...positron pointing to electron-side cluster...lets skip it...return without filling"<<std::endl;
38 std::cout<<
"Oops...electron pointing to positron-side cluster...lets skip it...return without filling"<<std::endl;
51 double coplan=
_ah->GetClusterCoplanarity(&eleClu, &posClu);
57 double eleClYEne=sin(atan2(eleY,eleZ))*eleE;
58 double posClYEne=sin(atan2(posY,posZ))*posE;
59 double netClYEne=posClYEne+eleClYEne;
66 Fill1DHisto(
"clE_sum_allpos_allele_h",eleE+posE,weight);
68 Fill2DHisto(
"clY_vs_clX_ele_allpos_allele_hh",eleX,eleY,weight);
69 Fill2DHisto(
"clY_vs_clE_ele_allpos_allele_hh",eleE,eleY,weight);
70 Fill2DHisto(
"clE_vs_clX_ele_allpos_allele_hh",eleX,eleE,weight);
71 Fill2DHisto(
"clY_vs_clX_pos_allpos_allele_hh",posX,posY,weight);
72 Fill2DHisto(
"clY_vs_clE_pos_allpos_allele_hh",posE,posY,weight);
73 Fill2DHisto(
"clE_vs_clX_pos_allpos_allele_hh",posX,posE,weight);
75 if(hasElectronTrack && hasPositronTrack){
76 Fill1DHisto(
"clE_ele_foundpos_foundele_h",eleE,weight);
77 Fill1DHisto(
"clX_ele_foundpos_foundele_h",eleX,weight);
78 Fill1DHisto(
"clY_ele_foundpos_foundele_h",eleY,weight);
79 Fill1DHisto(
"clE_pos_foundpos_foundele_h",posE,weight);
80 Fill1DHisto(
"clX_pos_foundpos_foundele_h",posX,weight);
81 Fill1DHisto(
"clY_pos_foundpos_foundele_h",posY,weight);
82 Fill1DHisto(
"clE_sum_foundpos_foundele_h",eleE+posE,weight);
83 Fill1DHisto(
"clNet_EY_foundpos_foundele_h",netClYEne,weight);
85 Fill2DHisto(
"clY_vs_clX_ele_foundpos_foundele_hh",eleX,eleY,weight);
86 Fill2DHisto(
"clY_vs_clE_ele_foundpos_foundele_hh",eleE,eleY,weight);
87 Fill2DHisto(
"clE_vs_clX_ele_foundpos_foundele_hh",eleX,eleE,weight);
88 Fill2DHisto(
"clY_vs_clX_pos_foundpos_foundele_hh",posX,posY,weight);
89 Fill2DHisto(
"clY_vs_clE_pos_foundpos_foundele_hh",posE,posY,weight);
90 Fill2DHisto(
"clE_vs_clX_pos_foundpos_foundele_hh",posX,posE,weight);
91 Fill1DHisto(
"nHits_ele_foundpos_foundele_h",eleTrkNHits,weight);
92 Fill1DHisto(
"trkMom_ele_foundpos_foundele_h",eleTrkMom,weight);
93 Fill1DHisto(
"trkEoverP_ele_foundpos_foundele_h",eleE/eleTrkMom,weight);
94 Fill1DHisto(
"nHits_pos_foundpos_foundele_h",posTrkNHits,weight);
95 Fill1DHisto(
"trkMom_pos_foundpos_foundele_h",posTrkMom,weight);
96 Fill1DHisto(
"trkEoverP_pos_foundpos_foundele_h",posE/posTrkMom,weight);
98 }
else if(!hasElectronTrack && hasPositronTrack){
99 Fill1DHisto(
"clE_ele_foundpos_missele_h",eleE,weight);
100 Fill1DHisto(
"clX_ele_foundpos_missele_h",eleX,weight);
101 Fill1DHisto(
"clY_ele_foundpos_missele_h",eleY,weight);
102 Fill1DHisto(
"clE_pos_foundpos_missele_h",posE,weight);
103 Fill1DHisto(
"clX_pos_foundpos_missele_h",posX,weight);
104 Fill1DHisto(
"clY_pos_foundpos_missele_h",posY,weight);
105 Fill1DHisto(
"clE_sum_foundpos_missele_h",eleE+posE,weight);
106 Fill1DHisto(
"clNet_EY_foundpos_missele_h",netClYEne,weight);
108 Fill2DHisto(
"clY_vs_clX_ele_foundpos_missele_hh",eleX,eleY,weight);
109 Fill2DHisto(
"clY_vs_clE_ele_foundpos_missele_hh",eleE,eleY,weight);
110 Fill2DHisto(
"clE_vs_clX_ele_foundpos_missele_hh",eleX,eleE,weight);
111 Fill2DHisto(
"clY_vs_clX_pos_foundpos_missele_hh",posX,posY,weight);
112 Fill2DHisto(
"clY_vs_clE_pos_foundpos_missele_hh",posE,posY,weight);
113 Fill2DHisto(
"clE_vs_clX_pos_foundpos_missele_hh",posX,posE,weight);
114 Fill1DHisto(
"nHits_pos_foundpos_missele_h",posTrkNHits,weight);
115 Fill1DHisto(
"trkMom_pos_foundpos_missele_h",posTrkMom,weight);
116 Fill1DHisto(
"trkEoverP_pos_foundpos_missele_h",posE/posTrkMom,weight);
117 }
else if(hasElectronTrack && !hasPositronTrack){
118 Fill1DHisto(
"clE_ele_misspos_foundele_h",eleE,weight);
119 Fill1DHisto(
"clX_ele_misspos_foundele_h",eleX,weight);
120 Fill1DHisto(
"clY_ele_misspos_foundele_h",eleY,weight);
121 Fill1DHisto(
"clE_pos_misspos_foundele_h",posE,weight);
122 Fill1DHisto(
"clX_pos_misspos_foundele_h",posX,weight);
123 Fill1DHisto(
"clY_pos_misspos_foundele_h",posY,weight);
124 Fill1DHisto(
"clE_sum_misspos_foundele_h",eleE+posE,weight);
125 Fill1DHisto(
"clNet_EY_misspos_foundele_h",netClYEne,weight);
127 Fill2DHisto(
"clY_vs_clX_ele_misspos_foundele_hh",eleX,eleY,weight);
128 Fill2DHisto(
"clY_vs_clE_ele_misspos_foundele_hh",eleE,eleY,weight);
129 Fill2DHisto(
"clE_vs_clX_ele_misspos_foundele_hh",eleX,eleE,weight);
130 Fill2DHisto(
"clY_vs_clX_pos_misspos_foundele_hh",posX,posY,weight);
131 Fill2DHisto(
"clY_vs_clE_pos_misspos_foundele_hh",posE,posY,weight);
132 Fill2DHisto(
"clE_vs_clX_pos_misspos_foundele_hh",posX,posE,weight);
133 Fill1DHisto(
"nHits_ele_misspos_foundele_h",eleTrkNHits,weight);
134 Fill1DHisto(
"trkMom_ele_misspos_foundele_h",eleTrkMom,weight);
135 Fill1DHisto(
"trkEoverP_ele_misspos_foundele_h",eleE/eleTrkMom,weight);
138 Fill1DHisto(
"clE_ele_misspos_missele_h",eleE,weight);
139 Fill1DHisto(
"clX_ele_misspos_missele_h",eleX,weight);
140 Fill1DHisto(
"clY_ele_misspos_missele_h",eleY,weight);
141 Fill1DHisto(
"clE_pos_misspos_missele_h",posE,weight);
142 Fill1DHisto(
"clX_pos_misspos_missele_h",posX,weight);
143 Fill1DHisto(
"clY_pos_misspos_missele_h",posY,weight);
144 Fill1DHisto(
"clE_sum_misspos_missele_h",eleE+posE,weight);
145 Fill1DHisto(
"clNet_EY_misspos_missele_h",netClYEne,weight);
147 Fill2DHisto(
"clY_vs_clX_ele_misspos_missele_hh",eleX,eleY,weight);
148 Fill2DHisto(
"clY_vs_clE_ele_misspos_missele_hh",eleE,eleY,weight);
149 Fill2DHisto(
"clE_vs_clX_ele_misspos_missele_hh",eleX,eleE,weight);
150 Fill2DHisto(
"clY_vs_clX_pos_misspos_missele_hh",posX,posY,weight);
151 Fill2DHisto(
"clY_vs_clE_pos_misspos_missele_hh",posE,posY,weight);
152 Fill2DHisto(
"clE_vs_clX_pos_misspos_missele_hh",posX,posE,weight);
197 Fill1DHisto(
"clTime_eleMinusPos_allpairs_h",clTimeDiff,weight);
209 double minDelta=666666;
210 double minDeltaX=666666;
211 double minDeltaY=666666;
212 Track* bestTrack=NULL;
213 double minDeltaCut=20.0;
214 for(
auto trk:tracks){
215 if(trk->getTanLambda()*clY<0)
220 std::vector<double> posAtECal=trk->getPositionAtEcal();
221 double delY=clY-posAtECal.at(1);
222 double delX=clX-posAtECal.at(0);
223 if(abs(delY)<minDelta){
231 if(minDelta<minDeltaCut){
235 Fill2DHisto(
"trkClDeltaXY_hh",minDeltaX,minDeltaY,weight);
236 Fill2DHisto(
"trkClDeltaXvsX_hh",clX,minDeltaX,weight);
237 Fill2DHisto(
"trkClDeltaYvsY_hh",clY,minDeltaY,weight);
238 Fill2DHisto(
"trkClDeltaYvsX_hh",clX,minDeltaY,weight);
239 Fill2DHisto(
"trkClDeltaXvsY_hh",clY,minDeltaX,weight);
243 return std::pair<CalCluster*,Track*>(cluster,bestTrack);
std::vector< double > getPosition() const
void Fill2DHisto(const std::string &histoName, float valuex, float valuey, float weight=1.)
description
void Fill1DHisto(const std::string &histoName, float value, float weight=1.)
description
CalCluster getCluster() const
void FillEffPlots(std::pair< CalCluster *, Track * > ele, std::pair< CalCluster *, Track * > pos, float weight=1.)
void FillPairSelectionPlots(CalCluster *eleClu, CalCluster *posClu, float weight)
std::pair< CalCluster *, Track * > getClusterTrackPair(CalCluster *cluster, std::vector< Track * > &tracks, float weight=1.0)
void FillPreSelectionPlots(CalCluster *, float weight=1.)
std::shared_ptr< AnaHelpers > _ah
int getTrackerHitCount() const
std::vector< double > getMomentum()