22 const vector<TrajectoryMeasurement> & measurements = trajectory->measurements();
23 for(vector<TrajectoryMeasurement>::const_iterator it = measurements.begin(); it!=measurements.end(); it++){
27 if( !trajState.
isValid())
continue;
32 double cosine = trackDirection.
z()/trackDirection.mag();
35 if(!useStrip)
continue;
42 const std::vector<uint8_t> & amplitudes = matchedHit->monoHit()->cluster()->amplitudes();
43 mono.
charge = accumulate(amplitudes.begin(), amplitudes.end(), 0);
45 for(
unsigned int i=0;
i<amplitudes.size();
i++){
if(amplitudes[
i]>=254)mono.
NSaturating++;}
47 const std::vector<uint8_t> & amplitudesSt = matchedHit->stereoHit()->cluster()->amplitudes();
48 stereo.
charge = accumulate(amplitudesSt.begin(), amplitudesSt.end(), 0);
50 for(
unsigned int i=0;
i<amplitudes.size();
i++){
if(amplitudes[
i]>=254)stereo.
NSaturating++;}
52 mono.
detId= matchedHit->monoHit()->geographicalId();
53 stereo.
detId= matchedHit->stereoHit()->geographicalId();
56 hits.push_back(stereo);
59 if(!useStrip)
continue;
67 const std::vector<uint8_t> & amplitudes = singleHit->
cluster()->amplitudes();
68 mono.
charge = accumulate(amplitudes.begin(), amplitudes.end(), 0);
70 for(
unsigned int i=0;
i<amplitudes.size();
i++){
if(amplitudes[
i]>=254)mono.
NSaturating++;}
75 }
else if(
const SiStripRecHit2D* singleHit=dynamic_cast<const SiStripRecHit2D*>(recHit)){
76 if(!useStrip)
continue;
83 const std::vector<uint8_t> & amplitudes = singleHit->cluster()->amplitudes();
84 mono.
charge = accumulate(amplitudes.begin(), amplitudes.end(), 0);
86 for(
unsigned int i=0;
i<amplitudes.size();
i++){
if(amplitudes[
i]>=254)mono.
NSaturating++;}
88 mono.
detId= singleHit->geographicalId();
91 }
else if(
const SiStripRecHit1D* single1DHit=dynamic_cast<const SiStripRecHit1D*>(recHit)){
92 if(!useStrip)
continue;
99 const std::vector<uint8_t> & amplitudes = single1DHit->cluster()->amplitudes();
100 mono.
charge = accumulate(amplitudes.begin(), amplitudes.end(), 0);
102 for(
unsigned int i=0;
i<amplitudes.size();
i++){
if(amplitudes[
i]>=254)mono.
NSaturating++;}
104 mono.
detId= single1DHit->geographicalId();
105 hits.push_back(mono);
108 }
else if(
const SiPixelRecHit* pixelHit=dynamic_cast<const SiPixelRecHit*>(recHit)){
109 if(!usePixel)
continue;
116 pixel.
charge = pixelHit->cluster()->charge();
118 pixel.
detId= pixelHit->geographicalId();
119 hits.push_back(pixel);
132 size_t n = hits.size();
133 for(
size_t i = 0;
i<
n;
i ++)
137 return (n>0)?
pow(result/n,1./expo):0.;
LocalVector localDirection() const
std::vector< DeDxHit > DeDxHitCollection
ClusterRef const & cluster() const
DetId geographicalId() const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< float >, ROOT::Math::LocalCoordinateSystemTag > LocalVector
vector in local coordinate system
Power< A, B >::type pow(const A &a, const B &b)