12#ifndef TrigInDetAnalysis_Converter_H
13#define TrigInDetAnalysis_Converter_H
61 while ( trackitr!=trackend ) {
63 double eta = (*trackitr)->param()->eta();
64 double phi = (*trackitr)->param()->phi0();
65 double z0 = (*trackitr)->param()->z0();
66 double pT = (*trackitr)->param()->pT();
67 double d0 = (*trackitr)->param()->a0();
70 double deta = (*trackitr)->param()->eeta();
71 double dphi = (*trackitr)->param()->ephi0();
72 double dz0 = (*trackitr)->param()->ez0();
73 double dpT = (*trackitr)->param()->epT();
74 double dd0 = (*trackitr)->param()->ea0();
76 int algoid = (*trackitr)->algorithmId();
78 int nBlayerHits = ((*trackitr)->HitPattern() & 0x1);
79 int nPixelHits = 2*(*trackitr)->NPixelSpacePoints();
80 int nSctHits = 2*(*trackitr)->NSCT_SpacePoints();
81 int nStrawHits = (*trackitr)->NStrawHits();
82 int nTrHits = (*trackitr)->NTRHits();
84 int nSiHits = nPixelHits + nSctHits;
85 bool expectBL =
false;
87 unsigned hitPattern = (*trackitr)->HitPattern();
88 unsigned multiPattern = 0;
90 double chi2 = (*trackitr)->chi2();
98 deta, dphi, dz0, dd0, dpT,
99 nBlayerHits, nPixelHits, nSctHits, nSiHits,
100 nStrawHits, nTrHits, hitPattern, multiPattern,
116 static int hpmap[20] = { 0, 1, 2, 7, 8, 9, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };
118 while ( trackitr!=trackend ) {
122 CLHEP::HepVector perigeeParams = measPer->parameters();
123 double pT = measPer->
pT();
124 double eta = measPer->
eta();
126 double z0 = perigeeParams[
Trk::z0];
127 double d0 = perigeeParams[
Trk::d0];
146 int nSiHits = nPixelHits + nSctHits;
147 bool expectBL =
false;
155 for (
int ih=0 ; ih<20 ; ih++ ) {
164 deta, dphi, dz0, dd0, dpT,
165 nBlayerHits, nPixelHits, nSctHits, nSiHits,
166 nStrawHits, nTrHits, bitmap, 0,
179 static int hpmap[20] = { 0, 1, 2, 7, 8, 9, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };
181 Analysis::MuonContainer::const_iterator muonitr = muontracks->
begin();
182 Analysis::MuonContainer::const_iterator muonend = muontracks->
end();
184 while(muonitr!=muonend) {
186 bool hasInDet = (*muonitr)->hasInDetTrackParticle();
188 if(hasInDet) trackitr=(*muonitr)->inDetTrackParticle();
190 if(!hasInDet)
continue;
194 CLHEP::HepVector perigeeParams = measPer->parameters();
195 double pT = measPer->
pT();
196 double eta = measPer->
eta();
198 double z0 = perigeeParams[
Trk::z0];
199 double d0 = perigeeParams[
Trk::d0];
219 int nSiHits = nPixelHits + nSctHits;
223 double dof = quality->quality->
numberDoF();
227 for (
int ih=0 ; ih<20 ; ih++ ) {
236 deta, dphi, dz0, dd0, dpT,
237 nBlayerHits, nPixelHits, nSctHits, nSiHits,
238 nStrawHits, nTrHits, bitmap, 0,
250 if (
phi < -TMath::Pi())
phi += 2*TMath::Pi();
251 if (
phi > TMath::Pi())
phi -= 2*TMath::Pi();
257 void ipCorr(
double d0,
double z0,
double& d0c,
double& z0c,
double phi0,
double eta,
double pt) {
259 double sn = sin(phi0);
260 double cs = cos(phi0);
261 double sd0 = (d0 != 0 ? d0/fabs(d0) : 1);
262 double spt = (pt != 0 ? pt/fabs(pt) : 1);
264 if (fabs(pt) >= 1*CLHEP::TeV) {
270 double rc = fabs(pt)*15.0/(9.0*1.042);
272 double xc = (fabs(d0)-spt*sd0*
rc)*cos(phi0+
M_PI/2*sd0) -
m_beamX;
273 double yc = (fabs(d0)-spt*sd0*
rc)*sin(phi0+
M_PI/2*sd0) -
m_beamY;
276 double xd01,yd01,xd02,yd02;
279 xd01 = 0; yd01 =
rc+yc;
280 xd02 = 0; yd02 = -
rc+yc;
282 xd01 = xc+yc/xc*yc+sqrt(
pow((xc+yc/xc*yc),2)-xc*xc-yc*yc+
rc*
rc); yd01 = yc/xc*xd01;
283 xd02 = xc+yc/xc*yc-sqrt(
pow((xc+yc/xc*yc),2)-xc*xc-yc*yc+
rc*
rc); yd02 = yc/xc*xd02;
286 double r1 = sqrt(xd01*xd01+yd01*yd01);
287 double r2 = sqrt(xd02*xd02+yd02*yd02);
292 phiV = atan2(yd01,xd01);
294 phiV = atan2(yd02,xd02);
304 d0c = fabs(sqrt(xc*xc+yc*yc)-
rc)*sin(phiV-newphi);
307 double theta_save=
theta;
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
Scalar theta() const
theta method
constexpr int pow(int base, int exp) noexcept
definition of StoreGate container holding a vector of Analysis::Muon
void addTrack(TIDA::Track *t)
void selectTracks(const Analysis::MuonContainer *muontracks)
void ipCorr(double d0, double z0, double &d0c, double &z0c, double phi0, double eta, double pt)
std::vector< TIDA::Track * > m_tracks
void selectTracks(const TrigInDetTrackCollection *trigtracks)
double phiCorr(double phi)
Converter(double x, double y, double z)
void selectTracks(const Rec::TrackParticleContainer *trigtracks)
const std::vector< TIDA::Track * > & tracks() const
DataModel_detail::const_iterator< DataVector > const_iterator
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
const Trk::Perigee * measuredPerigee() const
Accessor method for Perigee.
Class to represent and store fit qualities from track reconstruction in terms of and number of degre...
int numberDoF() const
returns the number of degrees of freedom of the overall track or vertex fit as integer
double chiSquared() const
returns the of the overall track fit
double eta() const
Access method for pseudorapidity - from momentum.
double pT() const
Access method for transverse momentum.
const FitQuality * fitQuality() const
accessor function for FitQuality.
const TrackSummary * trackSummary() const
accessor function for TrackSummary.
A summary of the information contained by a track.
double chi2(TH1 *h0, TH1 *h1)
DetectorType
enumerates the various detector types currently accessible from the isHit() method.
@ numberOfSCTHits
number of SCT holes
@ numberOfPixelHits
number of pixel layers on track with absence of hits
@ numberOfBLayerHits
these are the hits in the 0th pixel layer?
@ numberOfTRTHits
number of TRT outliers
@ numberOfTRTHighThresholdHits
total number of TRT hits which pass the high threshold