64 const std::vector<TrajectoryMeasurement>&,
113 std::map<unsigned int, std::vector<PSimHit*> >
idHitsMap;
144 if (isim->processType() == 9) delta =
true;
157 if (
id.subdetId()==3)
return ((
TIBDetId)(
id)).layer();
158 if (
id.subdetId()==5)
return ((
TOBDetId)(
id)).layer();
159 if (
id.subdetId()==1)
return ((
PXBDetId)(
id)).layer();
160 if (
id.subdetId()==4)
return ((
TIDDetId)(
id)).wheel();
161 if (
id.subdetId()==6)
return ((
TECDetId)(
id)).wheel();
162 if (
id.subdetId()==2)
return ((
PXFDetId)(
id)).disk();
168 if (
id.subdetId()==3)
return ((
TIBDetId)(
id)).layer();
169 if (
id.subdetId()==5)
return ((
TOBDetId)(
id)).layer();
170 if (
id.subdetId()==1)
return ((
PXBDetId)(
id)).layer();
171 if (
id.subdetId()==4)
return ((
TIDDetId)(
id)).wheel();
172 if (
id.subdetId()==6)
return ((
TECDetId)(
id)).wheel();
173 if (
id.subdetId()==2)
return ((
PXFDetId)(
id)).disk();
177 template<
unsigned int D>
182 LogTrace(
"CkfDebugger") <<
"parameters=" << recHit->parameters() ;
183 LogTrace(
"CkfDebugger") <<
"parametersError=" << recHit->parametersError() ;
188 SMatDD
R = asSMatrix<D>(recHit->parametersError()) + me.
measuredError<
D>(*recHit);
192 LogTrace(
"CkfDebugger") <<
"R(-1)=" <<
R ;
193 LogTrace(
"CkfDebugger") <<
"chi2=" << ROOT::Math::Similarity(r,R) ;
194 double pullX=(-r[0])*
sqrt(
R(0,0));
196 if ( VecD::Dim() >= 2 )
200 double pullY=(-r_1)*
sqrt(
R(1,1));
201 LogTrace(
"CkfDebugger") <<
"pullX=" << pullX ;
202 LogTrace(
"CkfDebugger") <<
"pullY=" << pullY ;
203 return std::pair<double,double>(pullX,pullY);
206 switch (recHit->dimension()) {
207 case 1:
return computePulls<1>(recHit,startingState);
208 case 2:
return computePulls<2>(recHit,startingState);
209 case 3:
return computePulls<3>(recHit,startingState);
210 case 4:
return computePulls<4>(recHit,startingState);
211 case 5:
return computePulls<5>(recHit,startingState);
213 throw cms::Exception(
"CkfDebugger error: rechit of dimension not 1,2,3,4,5");
217 std::map<std::pair<int,int>,
int>
dump2;
218 std::map<std::pair<int,int>,
int>
dump3;
219 std::map<std::pair<int,int>,
int>
dump4;
220 std::map<std::pair<int,int>,
int>
dump5;
221 std::map<std::pair<int,int>,
int>
dump6;
275 class less_mag :
public std::binary_function<PSimHit*, PSimHit*, bool> {
unsigned short processType() const
GlobalPoint globalPosition() const
std::map< std::string, TH1F * > hPullS_shrh
bool hasDelta(const PSimHit *correctHit)
std::pair< CTTRHp, double > analyseRecHitExistance(const PSimHit &sh, const TSOS &startingState)
std::map< std::string, TH1F * > hPullY_shst
bool correctMeas(const TM &tm, const PSimHit *correctHit) const
void printSimHits(const edm::Event &iEvent)
std::map< std::pair< int, int >, int > dump6
Geom::Theta< float > thetaAtEntry() const
fast and more accurate access to momentumAtEntry().theta()
ROOT::Math::SMatrix< double, D1, D1, ROOT::Math::MatRepSym< double, D1 > > SymMatrix
const MeasurementTracker * theMeasurementTracker
std::pair< double, double > computePulls(CTTRHp recHit, TSOS startingState)
TH2F * hPullGPXvsGPeta_shst
void dumpSimHit(const SimHit &hit) const
const MagneticField * theMagField
unsigned int detUnitId() const
const TransientTrackingRecHitBuilder * theTTRHBuilder
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
std::map< std::string, TH1F * > hPullGP_Z_shst
const GeometricSearchTracker * theGeomSearchTracker
const PSimHit & psimHit() const
float timeOfFlight() const
std::map< std::string, TH1F * > hPullY_strh
std::map< std::string, TH1F * > hPullM_shrh
void deleteHitAssociator()
std::map< std::string, TH1F * > hPullX_shst
int partner_det_not_fuond
std::vector< const PSimHit * > nextCorrectHits(const Trajectory &, unsigned int &)
Geom::Theta< float > thetaAtEntry() const
std::map< std::string, TH1F * > hPullM_shst
const MeasurementEstimator * theChi2
unsigned int trackId() const
CkfDebugger(edm::EventSetup const &es)
int analyseRecHitNotFound(const Trajectory &, CTTRHp)
std::map< std::string, TH1F * > hPullGP_Y_shst
int layer(const GeomDetUnit *det)
float timeOfFlight() const
double testSeed(CTTRHp, CTTRHp, TrajectoryStateOnSurface)
int matched_not_associated
Local3DPoint localPosition() const
const GeomDetUnit * theDet
bool associated(CTTRHp rechit, const PSimHit &sh) const
int assocTrackId(CTTRHp rechit) const
TH2F * hPullGPXvsGPr_shst
TrackerHitAssociator * hitAssociator
TH2F * hPullGPXvsGPY_shst
DetId geographicalId() const
The label of this GeomDet.
std::pair< double, double > computePulls(CTTRHp recHit, TSOS startingState)
TransientTrackingRecHit::ConstRecHitPointer CTTRHp
std::map< std::string, TH1F * > hPullX_shrh
float pabs() const
fast and more accurate access to momentumAtEntry().mag()
SimHit(const PSimHit *phit, const GeomDetUnit *gdu)
std::map< std::string, TH1F * > hPullGP_X_shst
bool operator()(const PSimHit *a, const PSimHit *b)
void fillSeedHist(CTTRHp h1, CTTRHp h2, TrajectoryStateOnSurface t)
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
LocalVector localDirection() const
Obsolete. Same as momentumAtEntry().unit(), for backward compatibility.
const GeomDetUnit * det() const
const Propagator * theForwardPropagator
bool correctTrajectory(const Trajectory &, unsigned int &) const
ROOT::Math::SVector< double, D1 > Vector
std::map< std::string, TH1F * > hPullM_strh
std::map< std::string, TH1F * > hPullS_shst
DecomposeProduct< arg, typename Div::arg > D
Geom::Phi< float > phiAtEntry() const
std::map< std::pair< int, int >, int > dump2
std::map< std::string, TH1F * > hPullS_strh
unsigned short processType() const
virtual const GeomDetUnit * idToDetUnit(DetId) const
Return the pointer to the GeomDetUnit corresponding to a given DetId.
const TrackerGeometry * theTrackerGeom
const GeomDetUnit * det(const PSimHit *sh) const
float energyLoss() const
The energy deposit in the PSimHit, in ???.
bool goodSimHit(const PSimHit &sh) const
std::map< std::string, TH1F * > hPullY_shrh
TH2F * hPullGPXvsGPX_shst
unsigned int trackId() const
Geom::Phi< float > phiAtEntry() const
fast and more accurate access to momentumAtEntry().phi()
std::map< std::string, TH1F * > hPullX_strh
LocalPoint localPosition() const
TH2F * hPullGPXvsGPZ_shst
const PSimHit * pSimHit(unsigned int tkId, DetId detId)
int layer(const GeomDet *det)
std::map< std::pair< int, int >, int > dump5
Global3DPoint position(const PSimHit *sh) const
LocalVector localDirection() const
std::map< unsigned int, std::vector< PSimHit * > > idHitsMap
TrajectoryStateOnSurface TSOS
bool analyseCompatibleMeasurements(const Trajectory &, const std::vector< TrajectoryMeasurement > &, const MeasurementTracker *, const Propagator *, const Chi2MeasurementEstimatorBase *, const TransientTrackingRecHitBuilder *)
unsigned int detUnitId() const
std::map< std::pair< int, int >, int > dump4
TH2F * hPullGPXvsGPphi_shst
std::map< std::pair< int, int >, int > dump3