CMS 3D CMS Logo

CkfDebugger Class Reference

#include <RecoTracker/DebugTools/interface/CkfDebugger.h>

List of all members.

Public Member Functions

bool analyseCompatibleMeasurements (const Trajectory &, const std::vector< TrajectoryMeasurement > &, const MeasurementTracker *, const Propagator *, const Chi2MeasurementEstimatorBase *, const TransientTrackingRecHitBuilder *)
 CkfDebugger (edm::EventSetup const &es)
void countSeed ()
void deleteHitAssociator ()
void fillSeedHist (CTTRHp h1, CTTRHp h2, TrajectoryStateOnSurface t)
void printSimHits (const edm::Event &iEvent)
 ~CkfDebugger ()

Private Types

typedef TrajectoryMeasurement TM
typedef TrajectoryStateOnSurface TSOS

Private Member Functions

std::pair< CTTRHp, double > analyseRecHitExistance (const PSimHit &sh, const TSOS &startingState)
int analyseRecHitNotFound (const Trajectory &, CTTRHp)
bool associated (CTTRHp rechit, const PSimHit &sh) const
int assocTrackId (CTTRHp rechit) const
std::pair< double, double > computePulls (CTTRHp recHit, TSOS startingState)
template<unsigned int D>
std::pair< double, double > computePulls (CTTRHp recHit, TSOS startingState)
bool correctMeas (const TM &tm, const PSimHit *correctHit) const
bool correctTrajectory (const Trajectory &, unsigned int &) const
const GeomDetUnitdet (const PSimHit *sh) const
void dumpSimHit (const SimHit &hit) const
bool goodSimHit (const PSimHit &sh) const
bool hasDelta (const PSimHit *correctHit)
int layer (const GeomDet *det)
int layer (const GeomDetUnit *det)
std::vector< const PSimHit * > nextCorrectHits (const Trajectory &, unsigned int &)
Global3DPoint position (const PSimHit *sh) const
const PSimHitpSimHit (unsigned int tkId, DetId detId)
double testSeed (CTTRHp, CTTRHp, TrajectoryStateOnSurface)

Private Attributes

int chi2gt30
int chi2gt30delta
int chi2gt30deltaSeed
int chi2ls30
int det_not_found
std::vector< intdump
std::map< std::pair< int, int >,
int
dump2
std::map< std::pair< int, int >,
int
dump3
std::map< std::pair< int, int >,
int
dump4
std::map< std::pair< int, int >,
int
dump5
std::map< std::pair< int, int >,
int
dump6
TFile * file
int glued_det_not_fuond
TH1F * hchi2seedAll
TH1F * hchi2seedProb
TrackerHitAssociatorhitAssociator
std::map< std::string, TH1F * > hPullGP_X_shst
std::map< std::string, TH1F * > hPullGP_Y_shst
std::map< std::string, TH1F * > hPullGP_Z_shst
TH2F * hPullGPXvsGPeta_shst
TH2F * hPullGPXvsGPphi_shst
TH2F * hPullGPXvsGPr_shst
TH2F * hPullGPXvsGPX_shst
TH2F * hPullGPXvsGPY_shst
TH2F * hPullGPXvsGPZ_shst
std::map< std::string, TH1F * > hPullM_shrh
std::map< std::string, TH1F * > hPullM_shst
std::map< std::string, TH1F * > hPullM_strh
std::map< std::string, TH1F * > hPullS_shrh
std::map< std::string, TH1F * > hPullS_shst
std::map< std::string, TH1F * > hPullS_strh
std::map< std::string, TH1F * > hPullX_shrh
std::map< std::string, TH1F * > hPullX_shst
std::map< std::string, TH1F * > hPullX_strh
std::map< std::string, TH1F * > hPullY_shrh
std::map< std::string, TH1F * > hPullY_shst
std::map< std::string, TH1F * > hPullY_strh
std::map< unsigned int,
std::vector< PSimHit * > > 
idHitsMap
int layer_not_found
int matched_not_associated
int matched_not_found
int no_component
int no_layer
int no_sim_hit
int only_one_component
int other
int partner_det_not_fuond
int problems
int propagation
int seedWithDelta
int simple_hit_not_found
const MeasurementEstimatortheChi2
const PropagatortheForwardPropagator
const GeometricSearchTrackertheGeomSearchTracker
const MagneticFieldtheMagField
const MeasurementTrackertheMeasurementTracker
const TrackerGeometrytheTrackerGeom
const
TransientTrackingRecHitBuilder
theTTRHBuilder
int totchi2gt30
int totSeeds

Classes

class  SimHit


Detailed Description

Definition at line 48 of file CkfDebugger.h.


Member Typedef Documentation

typedef TrajectoryMeasurement CkfDebugger::TM [private]

Definition at line 75 of file CkfDebugger.h.

typedef TrajectoryStateOnSurface CkfDebugger::TSOS [private]

Definition at line 76 of file CkfDebugger.h.


Constructor & Destructor Documentation

CkfDebugger::CkfDebugger ( edm::EventSetup const &  es  ) 

Definition at line 34 of file CkfDebugger.cc.

References chi2gt30, chi2gt30delta, chi2gt30deltaSeed, chi2ls30, det_not_found, dump, dump2, dump3, dump4, dump5, dump6, file, edm::EventSetup::get(), glued_det_not_fuond, hchi2seedAll, hchi2seedProb, hPullGP_X_shst, hPullGP_Y_shst, hPullGP_Z_shst, hPullGPXvsGPeta_shst, hPullGPXvsGPphi_shst, hPullGPXvsGPr_shst, hPullGPXvsGPX_shst, hPullGPXvsGPY_shst, hPullGPXvsGPZ_shst, hPullM_shrh, hPullM_shst, hPullM_strh, hPullS_shrh, hPullS_shst, hPullS_strh, hPullX_shrh, hPullX_shst, hPullX_strh, hPullY_shrh, hPullY_shst, hPullY_strh, i, j, layer_not_found, matched_not_associated, matched_not_found, no_component, no_layer, no_sim_hit, only_one_component, other, partner_det_not_fuond, problems, propagation, seedWithDelta, simple_hit_not_found, theMagField, theTrackerGeom, indexGen::title, and totchi2gt30.

00034                                                   :totSeeds(0)
00035 {
00036   file = new TFile("out.root","recreate");
00037   hchi2seedAll = new TH1F("hchi2seedAll","hchi2seedAll",2000,0,200);
00038   hchi2seedProb = new TH1F("hchi2seedProb","hchi2seedProb",2000,0,200);
00039 
00040   edm::ESHandle<TrackerGeometry> tracker;
00041   es.get<TrackerDigiGeometryRecord>().get(tracker);
00042   theTrackerGeom = &(*tracker);
00043 
00044   edm::ESHandle<MagneticField>                theField;
00045   es.get<IdealMagneticFieldRecord>().get(theField);
00046   theMagField = &(*theField);
00047   
00048   for (int i=0; i!=17; i++){
00049     dump.push_back(0);
00050   }
00051 
00052   stringstream title;
00053   for (int i=0; i!=6; i++)
00054     for (int j=0; j!=9; j++){
00055       if (i==0 && j>2) break;
00056       if (i==1 && j>1) break;
00057       if (i==2 && j>3) break;
00058       if (i==3 && j>2) break;
00059       if (i==4 && j>5) break;
00060       if (i==5 && j>8) break;
00061       dump2[pair<int,int>(i,j)]=0;
00062       dump3[pair<int,int>(i,j)]=0;
00063       dump4[pair<int,int>(i,j)]=0;
00064       dump5[pair<int,int>(i,j)]=0;
00065       dump6[pair<int,int>(i,j)]=0;
00066       title.str("");
00067       title << "pullX_" << i+1 << "-" << j+1 << "_sh-rh";
00068       hPullX_shrh[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00069       title.str("");
00070       title << "pullY_" << i+1 << "-" << j+1 << "_sh-rh";
00071       hPullY_shrh[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00072       title.str("");
00073       title << "pullX_" << i+1 << "-" << j+1 << "_sh-st";
00074       hPullX_shst[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00075       title.str("");
00076       title << "pullY_" << i+1 << "-" << j+1 << "_sh-st";
00077       hPullY_shst[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00078       title.str("");
00079       title << "pullX_" << i+1 << "-" << j+1 << "_st-rh";
00080       hPullX_strh[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00081       title.str("");
00082       title << "pullY_" << i+1 << "-" << j+1 << "_st-rh";
00083       hPullY_strh[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00084       title.str("");
00085       title << "PullGP_X_" << i+1 << "-" << j+1 << "_sh-st";
00086       hPullGP_X_shst[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00087       title.str("");
00088       title << "PullGP_Y_" << i+1 << "-" << j+1 << "_sh-st";
00089       hPullGP_Y_shst[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00090       title.str("");
00091       title << "PullGP_Z_" << i+1 << "-" << j+1 << "_sh-st";
00092       hPullGP_Z_shst[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00093       if ( ((i==2||i==4)&&(j==0||j==1)) || (i==3||i==5) ){
00094         title.str("");
00095         title << "pullM_" << i+1 << "-" << j+1 << "_sh-rh";
00096         hPullM_shrh[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00097         title.str("");
00098         title << "pullS_" << i+1 << "-" << j+1 << "_sh-rh";
00099         hPullS_shrh[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00100         title.str("");
00101         title << "pullM_" << i+1 << "-" << j+1 << "_sh-st";
00102         hPullM_shst[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00103         title.str("");
00104         title << "pullS_" << i+1 << "-" << j+1 << "_sh-st";
00105         hPullS_shst[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00106         title.str("");
00107         title << "pullM_" << i+1 << "-" << j+1 << "_st-rh";
00108         hPullM_strh[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00109         title.str("");
00110         title << "pullS_" << i+1 << "-" << j+1 << "_st-rh";
00111         hPullS_strh[title.str()] = new TH1F(title.str().c_str(),title.str().c_str(),1000,-50,50);
00112       }
00113     }
00114 
00115   hPullGPXvsGPX_shst   = new TH2F("PullGPXvsGPX_shst","PullGPXvsGPX_shst",1000,-50,50,100,-50,50);
00116   hPullGPXvsGPY_shst   = new TH2F("PullGPXvsGPY_shst","PullGPXvsGPY_shst",1000,-50,50,100,-50,50);
00117   hPullGPXvsGPZ_shst   = new TH2F("PullGPXvsGPZ_shst","PullGPXvsGPZ_shst",1000,-50,50,200,-100,100);
00118   hPullGPXvsGPr_shst   = new TH2F("PullGPXvsGPr_shst","PullGPXvsGPr_shst",1000,-50,50,300,-150,150);
00119   hPullGPXvsGPeta_shst = new TH2F("PullGPXvsGPeta_shst","PullGPXvsGPeta_shst",1000,-50,50,50,-2.5,2.5);
00120   hPullGPXvsGPphi_shst = new TH2F("PullGPXvsGPphi_shst","PullGPXvsGPphi_shst",1000,-50,50,63,0,6.3);
00121  
00122   seedWithDelta=0;
00123   problems=0;
00124   no_sim_hit=0;
00125   no_layer=0;
00126   layer_not_found=0;
00127   det_not_found=0;
00128   chi2gt30=0;
00129   chi2gt30delta=0;
00130   chi2gt30deltaSeed=0;
00131   chi2ls30=0;
00132   simple_hit_not_found=0;
00133   no_component=0;
00134   only_one_component=0;
00135   matched_not_found=0;
00136   matched_not_associated=0;
00137   partner_det_not_fuond=0;
00138   glued_det_not_fuond=0;
00139   propagation=0;
00140   other=0;
00141   totchi2gt30=0;
00142 }

CkfDebugger::~CkfDebugger (  ) 

Definition at line 1043 of file CkfDebugger.cc.

References chi2gt30, chi2gt30delta, chi2gt30deltaSeed, chi2ls30, det_not_found, dump, dump2, dump3, dump4, dump5, dump6, file, glued_det_not_fuond, hchi2seedAll, hchi2seedProb, hPullGP_X_shst, hPullGP_Y_shst, hPullGP_Z_shst, hPullGPXvsGPeta_shst, hPullGPXvsGPphi_shst, hPullGPXvsGPr_shst, hPullGPXvsGPX_shst, hPullGPXvsGPY_shst, hPullGPXvsGPZ_shst, hPullM_shrh, hPullM_shst, hPullM_strh, hPullS_shrh, hPullS_shst, hPullS_strh, hPullX_shrh, hPullX_shst, hPullX_strh, hPullY_shrh, hPullY_shst, hPullY_strh, i, int, it, j, layer_not_found, matched_not_associated, matched_not_found, no_component, no_layer, no_sim_hit, only_one_component, other, partner_det_not_fuond, problems, propagation, seedWithDelta, simple_hit_not_found, indexGen::title, totchi2gt30, and totSeeds.

01043                          {
01044   for (int it=0; it!=((int)(dump.size())); it++)
01045     edm::LogVerbatim("CkfDebugger") << "dump " << it << " " << dump[it] ;
01046   
01047   edm::LogVerbatim("CkfDebugger") ;
01048   edm::LogVerbatim("CkfDebugger") << "seedWithDelta=" <<  ((double)seedWithDelta/totSeeds) ;
01049   edm::LogVerbatim("CkfDebugger") << "problems=" << ((double)problems/totSeeds) ;
01050   edm::LogVerbatim("CkfDebugger") << "no_sim_hit=" << ((double)no_sim_hit/totSeeds) ;
01051   edm::LogVerbatim("CkfDebugger") << "no_layer=" << ((double)no_layer/totSeeds) ;
01052   edm::LogVerbatim("CkfDebugger") << "layer_not_found=" << ((double)layer_not_found/totSeeds) ;
01053   edm::LogVerbatim("CkfDebugger") << "det_not_found=" << ((double)det_not_found/totSeeds) ;
01054   edm::LogVerbatim("CkfDebugger") << "chi2gt30=" << ((double)chi2gt30/totSeeds) ;
01055   edm::LogVerbatim("CkfDebugger") << "chi2gt30deltaSeed=" << ((double)chi2gt30deltaSeed/totSeeds) ;
01056   edm::LogVerbatim("CkfDebugger") << "chi2gt30delta=" << ((double)chi2gt30delta/totSeeds) ;
01057   edm::LogVerbatim("CkfDebugger") << "chi2ls30=" << ((double)chi2ls30/totSeeds) ;
01058   edm::LogVerbatim("CkfDebugger") << "simple_hit_not_found=" << ((double)simple_hit_not_found/totSeeds) ;
01059   edm::LogVerbatim("CkfDebugger") << "no_component=" << ((double)no_component/totSeeds) ;
01060   edm::LogVerbatim("CkfDebugger") << "only_one_component=" << ((double)only_one_component/totSeeds) ;
01061   edm::LogVerbatim("CkfDebugger") << "matched_not_found=" << ((double)matched_not_found/totSeeds) ;
01062   edm::LogVerbatim("CkfDebugger") << "matched_not_associated=" << ((double)matched_not_associated/totSeeds) ;
01063   edm::LogVerbatim("CkfDebugger") << "partner_det_not_fuond=" << ((double)partner_det_not_fuond/totSeeds) ;
01064   edm::LogVerbatim("CkfDebugger") << "glued_det_not_fuond=" << ((double)glued_det_not_fuond/totSeeds) ;
01065   edm::LogVerbatim("CkfDebugger") << "propagation=" << ((double)propagation/totSeeds) ;
01066   edm::LogVerbatim("CkfDebugger") << "other=" << ((double)other/totSeeds) ;
01067   edm::LogVerbatim("CkfDebugger") << "totchi2gt30=" << ((double)totchi2gt30/totSeeds) ;
01068   edm::LogVerbatim("CkfDebugger") << "totSeeds=" << totSeeds ;
01069   edm::LogVerbatim("CkfDebugger") ;
01070   
01071   edm::LogVerbatim("CkfDebugger") << "layer navigation problems:" ;
01072   for (int i=0; i!=6; i++)
01073     for (int j=0; j!=9; j++){
01074       if (i==0 && j>2) break;
01075       if (i==1 && j>1) break;
01076       if (i==2 && j>3) break;
01077       if (i==3 && j>2) break;
01078       if (i==4 && j>5) break;
01079       if (i==5 && j>8) break;
01080       edm::LogVerbatim("CkfDebugger") << "det=" << i+1 << " lay=" << j+1 << " " << dump2[pair<int,int>(i,j)] ;
01081     }
01082   edm::LogVerbatim("CkfDebugger") << "\nlayer with hit having chi2>30:" ;
01083   for (int i=0; i!=6; i++)
01084     for (int j=0; j!=9; j++){
01085       if (i==0 && j>2) break;
01086       if (i==1 && j>1) break;
01087       if (i==2 && j>3) break;
01088       if (i==3 && j>2) break;
01089       if (i==4 && j>5) break;
01090       if (i==5 && j>8) break;
01091       edm::LogVerbatim("CkfDebugger") << "det=" << i+1 << " lay=" << j+1 << " " << dump3[pair<int,int>(i,j)] ;
01092     }
01093   edm::LogVerbatim("CkfDebugger") << "\nlayer with hit having chi2>30 for delta rays:" ;
01094   for (int i=0; i!=6; i++)
01095     for (int j=0; j!=9; j++){
01096       if (i==0 && j>2) break;
01097       if (i==1 && j>1) break;
01098       if (i==2 && j>3) break;
01099       if (i==3 && j>2) break;
01100       if (i==4 && j>5) break;
01101       if (i==5 && j>8) break;
01102       edm::LogVerbatim("CkfDebugger") << "det=" << i+1 << " lay=" << j+1 << " " << dump5[pair<int,int>(i,j)] ;
01103     }
01104   edm::LogVerbatim("CkfDebugger") << "\nlayer with det not found:" ;
01105   for (int i=0; i!=6; i++)
01106     for (int j=0; j!=9; j++){
01107       if (i==0 && j>2) break;
01108       if (i==1 && j>1) break;
01109       if (i==2 && j>3) break;
01110       if (i==3 && j>2) break;
01111       if (i==4 && j>5) break;
01112       if (i==5 && j>8) break;
01113       edm::LogVerbatim("CkfDebugger") << "det=" << i+1 << " lay=" << j+1 << " " << dump4[pair<int,int>(i,j)] ;
01114     }
01115   edm::LogVerbatim("CkfDebugger") << "\nlayer with correct RecHit after missing Sim Hit:" ;
01116   for (int i=0; i!=6; i++)
01117     for (int j=0; j!=9; j++){
01118       if (i==0 && j>2) break;
01119       if (i==1 && j>1) break;
01120       if (i==2 && j>3) break;
01121       if (i==3 && j>2) break;
01122       if (i==4 && j>5) break;
01123       if (i==5 && j>8) break;
01124       edm::LogVerbatim("CkfDebugger") << "det=" << i+1 << " lay=" << j+1 << " " << dump6[pair<int,int>(i,j)] ;
01125     }
01126   hchi2seedAll->Write();
01127   hchi2seedProb->Write();
01128   stringstream title;
01129   for (int i=0; i!=6; i++)
01130     for (int j=0; j!=9; j++){
01131       if (i==0 && j>2) break;
01132       if (i==1 && j>1) break;
01133       if (i==2 && j>3) break;
01134       if (i==3 && j>2) break;
01135       if (i==4 && j>5) break;
01136       if (i==5 && j>8) break;
01137       title.str("");
01138       title << "pullX_" << i+1 << "-" << j+1 << "_sh-rh";
01139       hPullX_shrh[title.str()]->Write();
01140       title.str("");
01141       title << "pullY_" << i+1 << "-" << j+1 << "_sh-rh";
01142       hPullY_shrh[title.str()]->Write();
01143       title.str("");
01144       title << "pullX_" << i+1 << "-" << j+1 << "_sh-st";
01145       hPullX_shst[title.str()]->Write();
01146       title.str("");
01147       title << "pullY_" << i+1 << "-" << j+1 << "_sh-st";
01148       hPullY_shst[title.str()]->Write();
01149       title.str("");
01150       title << "pullX_" << i+1 << "-" << j+1 << "_st-rh";
01151       hPullX_strh[title.str()]->Write();
01152       title.str("");
01153       title << "pullY_" << i+1 << "-" << j+1 << "_st-rh";
01154       hPullY_strh[title.str()]->Write();
01155       title.str("");
01156       title << "PullGP_X_" << i+1 << "-" << j+1 << "_sh-st";
01157       hPullGP_X_shst[title.str()]->Write();
01158       title.str("");
01159       title << "PullGP_Y_" << i+1 << "-" << j+1 << "_sh-st";
01160       hPullGP_Y_shst[title.str()]->Write();
01161       title.str("");
01162       title << "PullGP_Z_" << i+1 << "-" << j+1 << "_sh-st";
01163       hPullGP_Z_shst[title.str()]->Write();
01164       if ( (i==2||i==4)&&(j==0||j==1) || (i==3||i==5) ){
01165         title.str("");
01166         title << "pullM_" << i+1 << "-" << j+1 << "_sh-rh";
01167         hPullM_shrh[title.str()]->Write();
01168         title.str("");
01169         title << "pullS_" << i+1 << "-" << j+1 << "_sh-rh";
01170         hPullS_shrh[title.str()]->Write();
01171         title.str("");
01172         title << "pullM_" << i+1 << "-" << j+1 << "_sh-st";
01173         hPullM_shst[title.str()]->Write();
01174         title.str("");
01175         title << "pullS_" << i+1 << "-" << j+1 << "_sh-st";
01176         hPullS_shst[title.str()]->Write();
01177         title.str("");
01178         title << "pullM_" << i+1 << "-" << j+1 << "_st-rh";
01179         hPullM_strh[title.str()]->Write();
01180         title.str("");
01181         title << "pullS_" << i+1 << "-" << j+1 << "_st-rh";
01182         hPullS_strh[title.str()]->Write();
01183       }
01184     }
01185   hPullGPXvsGPX_shst->Write();
01186   hPullGPXvsGPY_shst->Write();
01187   hPullGPXvsGPZ_shst->Write();
01188   hPullGPXvsGPr_shst->Write();
01189   hPullGPXvsGPeta_shst->Write();
01190   hPullGPXvsGPphi_shst->Write();
01191   
01192   //file->Write();
01193   file->Close();
01194 }


Member Function Documentation

bool CkfDebugger::analyseCompatibleMeasurements ( const Trajectory traj,
const std::vector< TrajectoryMeasurement > &  meas,
const MeasurementTracker aMeasurementTracker,
const Propagator propagator,
const Chi2MeasurementEstimatorBase estimator,
const TransientTrackingRecHitBuilder aTTRHBuilder 
)

Definition at line 185 of file CkfDebugger.cc.

References analyseRecHitExistance(), analyseRecHitNotFound(), TrackerHitAssociator::associateHit(), begin, TransientTrackingRecHitBuilder::build(), TrajectoryStateOnSurface::cartesianError(), chi2gt30, chi2gt30delta, chi2gt30deltaSeed, chi2ls30, computePulls(), correctMeas(), correctTrajectory(), GlobalErrorBase< T, ErrorWeightType >::cxx(), GlobalErrorBase< T, ErrorWeightType >::cyy(), GlobalErrorBase< T, ErrorWeightType >::czz(), det(), PSimHit::detUnitId(), dump, dump2, dump3, dump4, dump5, lat::endl(), PV3DBase< T, PVType, FrameType >::eta(), Trajectory::firstMeasurement(), MeasurementTracker::geometricSearchTracker(), TrajectoryStateOnSurface::globalPosition(), h1, h2, hasDelta(), hchi2seedProb, hitAssociator, hPullGP_X_shst, hPullGP_Y_shst, hPullGP_Z_shst, hPullGPXvsGPeta_shst, hPullGPXvsGPphi_shst, hPullGPXvsGPr_shst, hPullGPXvsGPX_shst, hPullGPXvsGPY_shst, hPullGPXvsGPZ_shst, hPullM_shrh, hPullM_shst, hPullM_strh, hPullS_shrh, hPullS_shst, hPullS_strh, hPullX_shrh, hPullX_shst, hPullX_strh, hPullY_shrh, hPullY_shst, hPullY_strh, i, Trajectory::lastMeasurement(), layer(), TrajectoryStateOnSurface::localError(), PSimHit::localPosition(), TrajectoryStateOnSurface::localPosition(), LogTrace, PV3DBase< T, PVType, FrameType >::mag(), Trajectory::measurements(), nextCorrectHits(), PV3DBase< T, PVType, FrameType >::phi(), CartesianTrajectoryError::position(), GeomDet::position(), position(), LocalTrajectoryError::positionError(), problems, PSimHit::processType(), Propagator::propagate(), TrajectoryMeasurement::recHit(), HLT_VtxMuL3::result, seedWithDelta, funct::sqrt(), GeomDet::surface(), TrajectoryStateOnSurface::surface(), t, testSeed(), theChi2, theForwardPropagator, theGeomSearchTracker, theMeasurementTracker, theTTRHBuilder, indexGen::title, totchi2gt30, TrajectoryMeasurement::updatedState(), PV3DBase< T, PVType, FrameType >::x(), LocalError::xx(), PV3DBase< T, PVType, FrameType >::y(), LocalError::yy(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by CkfDebugTrajectoryBuilder::analyzeMeasurementsDebugger().

00191 {
00192   LogTrace("CkfDebugger") << "\nnow in analyseCompatibleMeasurements" ;
00193   LogTrace("CkfDebugger") << "number of input hits:" << meas.size() ;
00194   for(vector<TrajectoryMeasurement>::const_iterator tmpIt=meas.begin();tmpIt!=meas.end();tmpIt++){
00195     if (tmpIt->recHit()->isValid()) LogTrace("CkfDebugger") << "valid hit at position:" << tmpIt->recHit()->globalPosition() ;
00196   }
00197   theForwardPropagator = propagator;
00198   theChi2 = estimator;
00199   theMeasurementTracker = aMeasurementTracker;
00200   theGeomSearchTracker = theMeasurementTracker->geometricSearchTracker();
00201   theTTRHBuilder = aTTRHBuilder;
00202   unsigned int trajId = 0;
00203   if ( !correctTrajectory(traj, trajId)) {
00204     LogTrace("CkfDebugger") << "trajectory not correct" ;
00205     return true;
00206   } // only correct trajectories analysed
00207   LogTrace("CkfDebugger") << "correct trajectory" ;
00208 
00209   if (traj.measurements().size() == 2){
00210     if ( testSeed(traj.firstMeasurement().recHit(),traj.lastMeasurement().recHit(),traj.lastMeasurement().updatedState()) == -1 ) {
00211       LogTrace("CkfDebugger") << "Seed has delta" ;
00212       seedWithDelta++;
00213       return false;//true;//false?
00214     }
00215   }
00216 
00217   //const PSimHit* correctHit = nextCorrectHit(traj, trajId);
00218   //if ( correctHit == 0) return true; // no more simhits on this track
00219   vector<const PSimHit*> correctHits = nextCorrectHits(traj, trajId);
00220   if ( correctHits.size() == 0) return true; // no more simhits on this track
00221 
00222   for (vector<const PSimHit*>::iterator corHit=correctHits.begin();corHit!=correctHits.end();corHit++){
00223     for (vector<TM>::const_iterator i=meas.begin(); i!=meas.end(); i++) {
00224       if (correctMeas( *i, *corHit)) {
00225         LogTrace("CkfDebugger") << "Correct hit found at position " << i-meas.begin() ;
00226         return true;
00227       }
00228     }
00229   }
00230 
00231   //debug why the first hit in correctHits is not found 
00232   //FIXME should loop over all hits
00233   const PSimHit* correctHit = *(correctHits.begin());
00234 
00235   // correct hit not found
00236   edm::LogVerbatim("CkfDebugger") << endl << "CkfDebugger: problem found: correct hit not found by findCompatibleMeasurements" ;
00237   edm::LogVerbatim("CkfDebugger") << "The correct hit position is " << position(correctHit)  << " lp " << correctHit->localPosition() ;
00238   edm::LogVerbatim("CkfDebugger") << "The size of the meas vector is " << meas.size() ;
00239   dump[0]++;problems++;
00240 
00241   for (vector<TM>::const_iterator i=meas.begin(); i!=meas.end(); i++) {
00242     edm::LogVerbatim("CkfDebugger") << "Is the hit valid? " << i->recHit()->isValid() ;
00243     if (i->recHit()->isValid()) {
00244       edm::LogVerbatim("CkfDebugger") << "RecHit at " << i->recHit()->globalPosition()
00245                                       << " layer " <<   ((i->recHit()->det()->geographicalId().rawId() >>16) & 0xF)
00246                                       << " subdet " << i->recHit()->det()->geographicalId().subdetId() 
00247                                       << " Chi2 " << i->estimate() ;
00248     }
00249     else if (i->recHit()->det() == 0) {
00250       edm::LogVerbatim("CkfDebugger") << "Invalid RecHit returned with zero Det pointer" ;
00251     }
00252     else if (i->recHit()->det() == det(correctHit)) {
00253       edm::LogVerbatim("CkfDebugger") << "Invalid hit returned in correct Det" ;
00254     }
00255     else {
00256       edm::LogVerbatim("CkfDebugger") << "Invalid hit returned in Det at gpos " << i->recHit()->det()->position()
00257                                       << " correct Det is at " << det(correctHit)->position() ;
00258     }
00259   }
00260 
00261   //Look if the correct RecHit exists
00262   std::pair<CTTRHp, double> correctRecHit = 
00263     analyseRecHitExistance( *correctHit, traj.lastMeasurement().updatedState());
00264   if (correctRecHit.first==0 ) {
00265     //the hit does not exist or is uncorrectly matched
00266     if ( fabs(correctRecHit.second-0)<0.01 ) {dump[1]++;}//other
00267     if ( fabs(correctRecHit.second+1)<0.01 ) {dump[8]++;}//propagation
00268     if ( fabs(correctRecHit.second+2)<0.01 ) {dump[9]++;}//No component is found
00269     if ( fabs(correctRecHit.second+3)<0.01 ) {dump[10]++;}//Partner measurementDet not found
00270     if ( fabs(correctRecHit.second+4)<0.01 ) {dump[11]++;}//glued MeasurementDet not found
00271     if ( fabs(correctRecHit.second+5)<0.01 ) {dump[12]++;}//matched not found
00272     if ( fabs(correctRecHit.second+6)<0.01 ) {dump[13]++;}//Matched not associated
00273     if ( fabs(correctRecHit.second+7)<0.01 ) {dump[14]++;}//Only one component is found
00274     if ( fabs(correctRecHit.second+8)<0.01 ) {dump[15]++;}//not found (is not a glued det)
00275   }
00276   else {
00277     //the hit exists: why wasn't it found?
00278     int result = analyseRecHitNotFound(traj,correctRecHit.first);
00279     if (result == 5){
00280       if (correctRecHit.second>30) {
00281         edm::LogVerbatim("CkfDebugger") << "Outling RecHit at pos=" << correctRecHit.first->globalPosition()
00282                                         << " from SimHit at pos="<< position(correctHit) 
00283                                         << " det=" << correctHit->detUnitId() << " process=" << correctHit->processType() ;
00284         if (hasDelta(correctHit)){
00285           edm::LogVerbatim("CkfDebugger") << "there are deltas on this det" ;
00286           chi2gt30delta++;
00287           dump5[pair<int,int>((correctRecHit.first->det()->geographicalId().subdetId()-1),(layer(correctRecHit.first->det()))-1)]++;  
00288         }else{
00289           edm::LogVerbatim("CkfDebugger") << "no deltas on this det" ;
00290           dump[5]++;
00291           chi2gt30++;
00292           dump3[pair<int,int>((correctRecHit.first->det()->geographicalId().subdetId()-1),(layer(correctRecHit.first->det()))-1)]++;
00293           CTTRHp h1 = traj.measurements()[0].recHit();
00294           CTTRHp h2 = traj.measurements()[1].recHit();
00295           TSOS t = traj.measurements()[1].updatedState();
00296           double chi2 = testSeed(h1,h2,t);
00297           if (chi2==-1) {
00298             edm::LogVerbatim("CkfDebugger") << "there were deltas in the seed" ;
00299             chi2gt30deltaSeed++;
00300           }
00301           else {
00302             hchi2seedProb->Fill(chi2);
00303             edm::LogVerbatim("CkfDebugger") << "no deltas in the seed. What is wrong?" ;
00304 
00305             TSOS detState = theForwardPropagator->propagate( traj.lastMeasurement().updatedState(), correctRecHit.first->det()->surface());
00306             TSOS simDetState = theForwardPropagator->propagate( traj.lastMeasurement().updatedState(), det(correctHit)->surface());
00307 
00308             if (true/*detState.globalMomentum().y()>0*/){
00309               int subdetId = correctRecHit.first->det()->geographicalId().subdetId();
00310               int layerId  = layer(correctRecHit.first->det());
00311 
00312 
00313               LogTrace("CkfDebugger") << "position(correctHit)=" << position(correctHit) ;
00314               LogTrace("CkfDebugger") << "correctRecHit.first->globalPosition()=" << correctRecHit.first->globalPosition() ;
00315               LogTrace("CkfDebugger") << "detState.globalPosition()=" << detState.globalPosition() ;
00316               LogTrace("CkfDebugger") << "simDetState.globalPosition()=" << simDetState.globalPosition() ;
00317 
00318               LogTrace("CkfDebugger") << "correctHit->localPosition()=" << correctHit->localPosition() ;
00319               LogTrace("CkfDebugger") << "correctRecHit.first->localPosition()=" << correctRecHit.first->localPosition() ;
00320               LogTrace("CkfDebugger") << "correctRecHit.first->localPositionError()=" << correctRecHit.first->localPositionError() ;
00321               LogTrace("CkfDebugger") << "detState.localPosition()=" << detState.localPosition() ;
00322               LogTrace("CkfDebugger") << "detState.localError().positionError()=" << detState.localError().positionError() ;
00323               LogTrace("CkfDebugger") << "simDetState.localPosition()=" << simDetState.localPosition() ;
00324               LogTrace("CkfDebugger") << "simDetState.localError().positionError()=" << simDetState.localError().positionError() ;
00325               double pullx_shrh = (correctHit->localPosition().x()-correctRecHit.first->localPosition().x())/
00326                 sqrt(correctRecHit.first->localPositionError().xx());
00327               double pully_shrh = 0;
00328               if (correctRecHit.first->localPositionError().yy()!=0) 
00329                 pully_shrh = (correctHit->localPosition().y()-correctRecHit.first->localPosition().y())/
00330                   sqrt(correctRecHit.first->localPositionError().yy());
00331               double pullx_shst = (correctHit->localPosition().x()-simDetState.localPosition().x())/
00332                 sqrt(simDetState.localError().positionError().xx());
00333               double pully_shst = (correctHit->localPosition().y()-simDetState.localPosition().y())/
00334                 sqrt(simDetState.localError().positionError().yy());
00335 
00336               LogTrace("CkfDebugger") << "pullx(sh-rh)=" << pullx_shrh ;
00337               LogTrace("CkfDebugger") << "pully(sh-rh)=" << pully_shrh ;
00338               LogTrace("CkfDebugger") << "pullx(sh-st)=" << pullx_shst ;
00339               LogTrace("CkfDebugger") << "pully(sh-st)=" << pully_shst ;
00340 
00341               LogTrace("CkfDebugger") << "pullx(st-rh)=" << (detState.localPosition().x()-correctRecHit.first->localPosition().x())/
00342                 sqrt(correctRecHit.first->localPositionError().xx()+detState.localError().positionError().xx()) ;
00343 
00344               pair<double,double> pulls = computePulls(correctRecHit.first, detState);
00345               if (subdetId>0 &&subdetId<7 && layerId>0 && layerId<10) {
00346                 stringstream title;
00347                 title.str("");
00348                 title << "pullX_" << subdetId << "-" << layerId << "_sh-rh";
00349                 hPullX_shrh[title.str()]->Fill( pullx_shrh );
00350                 title.str("");
00351                 title << "pullY_" << subdetId << "-" << layerId << "_sh-rh";
00352                 hPullY_shrh[title.str()]->Fill( pully_shrh );
00353                 title.str("");
00354                 title << "pullX_" << subdetId << "-" << layerId <<"_sh-st";
00355                 hPullX_shst[title.str()]->Fill( pullx_shst );
00356                 title.str("");
00357                 title << "pullY_" << subdetId << "-" << layerId <<"_sh-st";
00358                 hPullY_shst[title.str()]->Fill( pully_shst );
00359                 title.str("");
00360                 title << "pullX_" << subdetId << "-" << layerId <<"_st-rh";
00361                 hPullX_strh[title.str()]->Fill(pulls.first);
00362                 title.str("");
00363                 title << "pullY_" << subdetId << "-" << layerId <<"_st-rh";
00364                 hPullY_strh[title.str()]->Fill(pulls.second);
00365 
00366                 GlobalPoint shGPos = position(correctHit);
00367                 GlobalPoint stGPos = simDetState.globalPosition();
00368                 GlobalError stGPosErr = simDetState.cartesianError().position();
00369                 double pullGPx = (shGPos.x()-stGPos.x())/sqrt(stGPosErr.cxx());
00370                 title.str("");
00371                 title << "PullGP_X_" << subdetId << "-" << layerId << "_sh-st";
00372                 hPullGP_X_shst[title.str()]->Fill(pullGPx);
00373                 title.str("");
00374                 title << "PullGP_Y_" << subdetId << "-" << layerId << "_sh-st";
00375                 hPullGP_Y_shst[title.str()]->Fill((shGPos.y()-stGPos.y())/sqrt(stGPosErr.cyy()));
00376                 title.str("");
00377                 title << "PullGP_Z_" << subdetId << "-" << layerId << "_sh-st";
00378                 hPullGP_Z_shst[title.str()]->Fill((shGPos.z()-stGPos.z())/sqrt(stGPosErr.czz()));
00379 
00380                 if (subdetId==3&&layerId==1){
00381                   hPullGPXvsGPX_shst->Fill(pullGPx,shGPos.x());
00382                   hPullGPXvsGPY_shst->Fill(pullGPx,shGPos.y());
00383                   hPullGPXvsGPZ_shst->Fill(pullGPx,shGPos.z());
00384                   hPullGPXvsGPr_shst->Fill(pullGPx,shGPos.mag());
00385                   hPullGPXvsGPeta_shst->Fill(pullGPx,shGPos.eta());
00386                   hPullGPXvsGPphi_shst->Fill(pullGPx,shGPos.phi());
00387                 }
00388                 if (dynamic_cast<const SiStripMatchedRecHit2D*>(correctRecHit.first->hit())) {
00389                   LogTrace("CkfDebugger") << "MONO HIT";
00390                   CTTRHp tMonoHit = theTTRHBuilder->build(dynamic_cast<const SiStripMatchedRecHit2D*>(correctRecHit.first->hit())->monoHit());
00391                   const PSimHit sMonoHit = *(hitAssociator->associateHit(*tMonoHit->hit()).begin());
00392                   TSOS monoState = theForwardPropagator->propagate( traj.lastMeasurement().updatedState(), tMonoHit->det()->surface());
00393                   double pullM_shrh = (sMonoHit.localPosition().x()-tMonoHit->localPosition().x())/
00394                     sqrt(tMonoHit->localPositionError().xx());
00395                   double pullM_shst = (sMonoHit.localPosition().x()-monoState.localPosition().x())/
00396                     sqrt(monoState.localError().positionError().xx());
00397                   pair<double,double> pullsMono = computePulls(tMonoHit, monoState);
00398                   title.str("");
00399                   title << "pullM_" << subdetId << "-" << layerId << "_sh-rh";
00400                   hPullM_shrh[title.str()]->Fill(pullM_shrh);
00401                   title.str("");
00402                   title << "pullM_" << subdetId << "-" << layerId << "_sh-st";
00403                   hPullM_shst[title.str()]->Fill(pullM_shst);
00404                   title.str("");
00405                   title << "pullM_" << subdetId << "-" << layerId << "_st-rh";
00406                   hPullM_strh[title.str()]->Fill(pullsMono.first);
00407 
00408                   LogTrace("CkfDebugger") << "STEREO HIT";
00409                   CTTRHp tStereoHit = theTTRHBuilder->build(dynamic_cast<const SiStripMatchedRecHit2D*>(correctRecHit.first->hit())->stereoHit());
00410                   const PSimHit sStereoHit = *(hitAssociator->associateHit(*tStereoHit->hit()).begin());
00411                   TSOS stereoState = theForwardPropagator->propagate( traj.lastMeasurement().updatedState(), tStereoHit->det()->surface());
00412                   double pullS_shrh = (sStereoHit.localPosition().x()-tStereoHit->localPosition().x())/
00413                     sqrt(tStereoHit->localPositionError().xx());
00414                   double pullS_shst = (sStereoHit.localPosition().x()-stereoState.localPosition().x())/
00415                     sqrt(stereoState.localError().positionError().xx());
00416                   pair<double,double> pullsStereo = computePulls(tStereoHit, stereoState);
00417                   title.str("");
00418                   title << "pullS_" << subdetId  << "-" << layerId << "_sh-rh";
00419                   hPullS_shrh[title.str()]->Fill(pullS_shrh);
00420                   title.str("");
00421                   title << "pullS_" << subdetId << "-" << layerId << "_sh-st";
00422                   hPullS_shst[title.str()]->Fill(pullS_shst);
00423                   title.str("");
00424                   title << "pullS_" << subdetId << "-" << layerId << "_st-rh";
00425                   hPullS_strh[title.str()]->Fill(pullsStereo.first);
00426                 }
00427               } else 
00428                 edm::LogVerbatim("CkfDebugger") << "unexpected result: wrong det or layer id " 
00429                                                 << subdetId << " " << layerId << " " 
00430                                                 << correctRecHit.first->det()->geographicalId().rawId();
00431             }
00432           }
00433         }
00434       }
00435       else {
00436         edm::LogVerbatim("CkfDebugger") << "unexpected result " << correctRecHit.second ;
00437         dump[6]++;chi2ls30++;
00438       }
00439     }
00440     else dump[result]++;
00441     if (result == 3){
00442       dump2[pair<int,int>((correctRecHit.first->det()->geographicalId().subdetId()-1),(layer(correctRecHit.first->det()))-1)]++; 
00443     }
00444     if (result == 4){
00445       dump4[pair<int,int>((correctRecHit.first->det()->geographicalId().subdetId()-1),(layer(correctRecHit.first->det()))-1)]++; 
00446     }
00447     if (correctRecHit.second>30) {
00448       dump[7]++;totchi2gt30++; 
00449     }
00450   }
00451   return false;
00452 }

pair< CTTRHp, double > CkfDebugger::analyseRecHitExistance ( const PSimHit sh,
const TSOS startingState 
) [private]

Definition at line 666 of file CkfDebugger.cc.

References associated(), det(), PSimHit::detUnitId(), MeasurementEstimator::estimate(), GeomDet::geographicalId(), MeasurementDet::geomDet(), StripSubdetector::glued(), glued_det_not_fuond, gluedId(), MeasurementTracker::idToDet(), TrajectoryStateOnSurface::isValid(), layer(), LogTrace, matched_not_associated, matched_not_found, me, MeasurementExtractor::measuredError(), MeasurementExtractor::measuredParameters(), no_component, only_one_component, other, partner_det_not_fuond, StripSubdetector::partnerDetId(), MeasurementDet::position(), position(), TrackingRecHitProjector< ResultingHit >::project(), projHit, Propagator::propagate(), propagation, pSimHit(), dttmaxenums::R, r, MeasurementDet::recHits(), HLT_VtxMuL3::result, simple_hit_not_found, DetId::subdetId(), GeomDet::surface(), MeasurementDet::surface(), theChi2, theForwardPropagator, theMagField, theMeasurementTracker, PSimHit::trackId(), and y.

Referenced by analyseCompatibleMeasurements().

00667 {
00668   LogTrace("CkfDebugger") << "now in analyseRecHitExistance" ;
00669 
00670   std::pair<CTTRHp, double> result;
00671   
00672   const MeasurementDet* simHitDet = theMeasurementTracker->idToDet( DetId( sh.detUnitId()));
00673   TSOS simHitState = TSOSFromSimHitFactory()(sh, *det(&sh), *theMagField);
00674   MeasurementDet::RecHitContainer recHits = simHitDet->recHits( simHitState);//take all hits from det
00675 
00676   //check if the hit is not present or is a problem of association
00677   TSOS firstDetState = theForwardPropagator->propagate( startingState, det(&sh)->surface());
00678   if (!firstDetState.isValid()) {
00679     edm::LogVerbatim("CkfDebugger") << "CkfDebugger: propagation failed from state " << startingState << " to first det surface " 
00680                                     << position(&sh) ;
00681     propagation++;
00682     return pair<CTTRHp, double>(0,-1);
00683   }
00684 
00685   bool found = false;
00686   for ( MeasurementDet::RecHitContainer::const_iterator rh = recHits.begin(); rh != recHits.end(); rh++) {
00687     if ( associated( *rh, sh)) {
00688       found = true;
00689       result = std::pair<CTTRHp, double>(*rh,theChi2->estimate( firstDetState, **rh).second);
00690       edm::LogVerbatim("CkfDebugger") << "CkfDebugger: A RecHit associated to the correct Simhit exists at lpos " 
00691                                       << (**rh).localPosition()
00692                                       << " gpos " << (**rh).globalPosition()
00693                                       << " layer " <<   layer((**rh).det())
00694                                       << " subdet " << (**rh).det()->geographicalId().subdetId() 
00695                                       << " Chi2 " << theChi2->estimate( firstDetState, **rh).second;
00696     }
00697   }
00698   if (!found) {
00699     edm::LogVerbatim("CkfDebugger") << "CkfDebugger: there is no RecHit associated to the correct SimHit." ;
00700     edm::LogVerbatim("CkfDebugger") << " There are " <<  recHits.size() << " RecHits in the simHit DetUnit" ;
00701     edm::LogVerbatim("CkfDebugger") << "SH GP=" << position(&sh) << " subdet=" << det(&sh)->geographicalId().subdetId() 
00702                                     << " layer=" << layer(det(&sh)) ;
00703     int y=0;
00704     for (MeasurementDet::RecHitContainer::const_iterator rh = recHits.begin(); rh != recHits.end(); rh++)
00705       edm::LogVerbatim("CkfDebugger") << "RH#" << y++ << " GP=" << (**rh).globalPosition() << " subdet=" << (**rh).det()->geographicalId().subdetId() 
00706                                       << " layer=" << layer((**rh).det()) ;
00707     for ( MeasurementDet::RecHitContainer::const_iterator rh = recHits.begin(); rh != recHits.end(); rh++) {
00708       edm::LogVerbatim("CkfDebugger") << "Non-associated RecHit at pos " << (**rh).localPosition() ;
00709     }
00710   }
00711 
00712   bool found2 = false;
00713   const PSimHit* sh2;
00714   StripSubdetector subdet( det(&sh)->geographicalId());
00715   if (!subdet.glued()) {
00716     edm::LogVerbatim("CkfDebugger") << "The DetUnit is not part of a GluedDet" ;
00717     if (found) {
00718       if (result.second>30){
00719         LogTrace("CkfDebugger") << "rh->parameters()=" << result.first->parameters() ;
00720         LogTrace("CkfDebugger") << "rh->parametersError()=" << result.first->parametersError() ;
00721         MeasurementExtractor me(firstDetState);
00722         AlgebraicVector r(result.first->parameters() - me.measuredParameters(*result.first));
00723         LogTrace("CkfDebugger") << "me.measuredParameters(**rh)=" << me.measuredParameters(*result.first) ;
00724         LogTrace("CkfDebugger") << "me.measuredError(**rh)=" << me.measuredError(*result.first) ;
00725         AlgebraicSymMatrix R(result.first->parametersError() + me.measuredError(*result.first));
00726         LogTrace("CkfDebugger") << "r=" << r ;
00727         LogTrace("CkfDebugger") << "R=" << R ;
00728         int ierr; 
00729         R.invert(ierr);
00730         LogTrace("CkfDebugger") << "R(-1)=" << R ;
00731         LogTrace("CkfDebugger") << "chi2=" << R.similarity(r) ;
00732       }
00733       return result;
00734     }
00735     else {
00736       simple_hit_not_found++;
00737       return pair<CTTRHp, double>(0,-8);//not found (is not a glued det)
00738     }
00739   } else {
00740     edm::LogVerbatim("CkfDebugger") << "The DetUnit is part of a GluedDet" ;
00741     DetId partnerDetId = DetId( subdet.partnerDetId());
00742 
00743     sh2 = pSimHit( sh.trackId(), partnerDetId);
00744     if (sh2 == 0) {
00745       edm::LogVerbatim("CkfDebugger") << "Partner DetUnit does not have a SimHit from the same track" ;
00746       if (found) {
00747         //projected rec hit
00748         TrackingRecHitProjector<ProjectedRecHit2D> proj;
00749         DetId gid = gluedId( subdet);
00750         const MeasurementDet* gluedDet = theMeasurementTracker->idToDet( gid);
00751         TSOS gluedTSOS = theForwardPropagator->propagate(startingState, gluedDet->geomDet().surface());
00752         CTTRHp projHit = proj.project( *result.first,gluedDet->geomDet(),gluedTSOS).get();
00753         //LogTrace("CkfDebugger") << proj.project( *result.first,gluedDet->geomDet(),gluedTSOS)->parameters() ;
00754         //LogTrace("CkfDebugger") << projHit->parametersError() ;
00755         double chi2 = theChi2->estimate(gluedTSOS, *proj.project( *result.first,gluedDet->geomDet(),gluedTSOS)).second;
00756         return std::pair<CTTRHp, double>(projHit,chi2);
00757       }
00758     }
00759     else {
00760       edm::LogVerbatim("CkfDebugger") << "Partner DetUnit has a good SimHit at gpos " << position(sh2) 
00761                                       << " lpos " << sh2->localPosition() ;
00762       //}
00763     
00764       const MeasurementDet* partnerDet = theMeasurementTracker->idToDet( partnerDetId);
00765       if (partnerDet == 0) {
00766         edm::LogVerbatim("CkfDebugger") << "Partner measurementDet not found!!!" ;
00767         partner_det_not_fuond++;
00768         return pair<CTTRHp, double>(0,-3);
00769       }
00770       TSOS simHitState2 = TSOSFromSimHitFactory()(*sh2, *det(sh2), *theMagField);
00771       MeasurementDet::RecHitContainer recHits2 = partnerDet->recHits( simHitState2);
00772 
00773       TSOS secondDetState = theForwardPropagator->propagate( startingState, det(sh2)->surface());
00774       if (!secondDetState.isValid()) {
00775         edm::LogVerbatim("CkfDebugger") << "CkfDebugger: propagation failed from state " << startingState << " to second det surface " 
00776                                         << position(sh2) ;
00777         propagation++;
00778         return pair<CTTRHp, double>(0,-1);
00779       }
00780 
00781       for ( MeasurementDet::RecHitContainer::const_iterator rh = recHits2.begin(); rh != recHits2.end(); rh++) {
00782         if ( associated( *rh, *sh2)) {
00783           found2 = true;
00784           edm::LogVerbatim("CkfDebugger") << "CkfDebugger: A RecHit associated to the correct Simhit exists at lpos " 
00785                                           << (**rh).localPosition()
00786                                           << " gpos " << (**rh).globalPosition()
00787                                           << " Chi2 " << theChi2->estimate( secondDetState, **rh).second
00788             ;
00789         }
00790       }
00791       if (!found2) {
00792         edm::LogVerbatim("CkfDebugger") << "CkfDebugger: there is no RecHit associated to the correct SimHit." ;
00793         LogTrace("CkfDebugger") << " There are " <<  recHits.size() << " RecHits in the simHit DetUnit" ;
00794         for ( MeasurementDet::RecHitContainer::const_iterator rh = recHits.begin(); rh != recHits.end(); rh++) {
00795           LogTrace("CkfDebugger") << "Non-associated RecHit at pos " << (**rh).localPosition() ;
00796         }
00797       }
00798     }
00799   }
00800 
00801   MeasurementDet::RecHitContainer gluedHits;
00802   if (found && found2) {
00803     // look in the glued det
00804     DetId gid = gluedId( subdet);
00805     const MeasurementDet* gluedDet = theMeasurementTracker->idToDet( gid);
00806     if ( gluedDet == 0) {
00807       edm::LogVerbatim("CkfDebugger") << "CkfDebugger ERROR: glued MeasurementDet not found!" ;
00808       glued_det_not_fuond++;
00809       return pair<CTTRHp, double>(0,-4);
00810     }
00811 
00812     TSOS gluedDetState = theForwardPropagator->propagate( startingState, gluedDet->surface());
00813     if (!gluedDetState.isValid()) {
00814       edm::LogVerbatim("CkfDebugger") << "CkfDebugger: propagation failed from state " << startingState << " to det surface " 
00815                                       << gluedDet->position() ;
00816       propagation++;
00817       return pair<CTTRHp, double>(0,-1);
00818     }
00819 
00820     gluedHits = gluedDet->recHits( gluedDetState);
00821     edm::LogVerbatim("CkfDebugger") << "CkfDebugger: the GluedDet returned " << gluedHits.size() << " hits" ;
00822     if (gluedHits.size()==0){
00823       edm::LogVerbatim("CkfDebugger") << "Found and associated mono and stereo recHits but not matched!!!" ;
00824       matched_not_found++;
00825       return pair<CTTRHp, double>(0,-5);
00826     } 
00827     bool found3 = false;
00828     for ( MeasurementDet::RecHitContainer::const_iterator rh = gluedHits.begin(); rh != gluedHits.end(); rh++) {
00829       if ( associated( *rh, sh) && associated( *rh, *sh2)) {
00830         double chi2 = theChi2->estimate(gluedDetState, **rh).second;
00831         edm::LogVerbatim("CkfDebugger") << "Matched hit at lpos " << (**rh).localPosition()
00832                                         << " gpos " << (**rh).globalPosition()
00833                                         << " has Chi2 " << chi2
00834           ;
00835         result = std::pair<CTTRHp, double>(&**rh,chi2);
00836         found3 = true;
00837         if (chi2>30){
00838           LogTrace("CkfDebugger") << "rh->parameters()=" << (*rh)->parameters() ;
00839           LogTrace("CkfDebugger") << "rh->parametersError()=" << (*rh)->parametersError() ;
00840           MeasurementExtractor me(gluedDetState);
00841           AlgebraicVector r((*rh)->parameters() - me.measuredParameters(**rh));
00842           LogTrace("CkfDebugger") << "me.measuredParameters(**rh)=" << me.measuredParameters(**rh) ;
00843           LogTrace("CkfDebugger") << "me.measuredError(**rh)=" << me.measuredError(**rh) ;
00844           AlgebraicSymMatrix R((*rh)->parametersError() + me.measuredError(**rh));
00845           LogTrace("CkfDebugger") << "r=" << r ;
00846           LogTrace("CkfDebugger") << "R=" << R ;
00847           int ierr; 
00848           R.invert(ierr);
00849           LogTrace("CkfDebugger") << "R(-1)=" << R ;
00850           LogTrace("CkfDebugger") << "chi2=" << R.similarity(r) ;
00851         }
00852         break;
00853       }
00854     }
00855     if (found3) return result;
00856     else {
00857       edm::LogVerbatim("CkfDebugger") << "Found and associated mono and stereo recHits. Matched found but not associated!!!" ;
00858       matched_not_associated++;
00859       return pair<CTTRHp, double>(0,-6);
00860     }
00861   }
00862   else if ( (found && !found2) || (!found && found2) ) {
00863     edm::LogVerbatim("CkfDebugger") << "Only one component is found" ;
00864     only_one_component++;
00865     return pair<CTTRHp, double>(0,-7);
00866   }
00867   else {
00868     edm::LogVerbatim("CkfDebugger") << "No component is found" ;
00869     no_component++;
00870     return pair<CTTRHp, double>(0,-2);
00871   }
00872   other++;
00873   return pair<CTTRHp, double>(0,0);//other
00874 }

int CkfDebugger::analyseRecHitNotFound ( const Trajectory traj,
CTTRHp  correctRecHit 
) [private]

Definition at line 888 of file CkfDebugger.cc.

References BoundSurface::bounds(), GeometricSearchDet::compatibleDets(), det(), det_not_found, detId, GeometricSearchTracker::detLayer(), Trajectory::direction(), dump6, GeomDet::geographicalId(), gluedId(), Trajectory::lastLayer(), Trajectory::lastMeasurement(), layer(), layer_not_found, Bounds::length(), LogTrace, DetLayer::nextLayers(), no_layer, no_sim_hit, DetId::rawId(), BarrelDetLayer::specificSurface(), parsecf::pyparsing::test(), theChi2, theForwardPropagator, theGeomSearchTracker, TrajectoryMeasurement::updatedState(), and Bounds::width().

Referenced by analyseCompatibleMeasurements().

00889 {
00890   unsigned int correctDetId = correctRecHit->det()->geographicalId().rawId();
00891   int correctLayId = layer(correctRecHit->det());
00892   LogTrace("CkfDebugger") << "correct layer id=" << correctLayId ;
00893 
00894   TSOS currentState( traj.lastMeasurement().updatedState() );
00895   vector<const DetLayer*> nl = traj.lastLayer()->nextLayers( *currentState.freeState(),traj.direction() );
00896   if (nl.empty()) {
00897     edm::LogVerbatim("CkfDebugger") << "no compatible layers" ;
00898     no_layer++;return 2;
00899   }
00900 
00901   TkLayerLess lless;//FIXME - was lless(traj.direction())
00902   const DetLayer* detLayer = 0;
00903   bool navLayerAfter = false;
00904   bool test = false;
00905   for (vector<const DetLayer*>::iterator il = nl.begin(); il != nl.end(); il++) {
00906     if ( dynamic_cast<const PixelBarrelLayer*>(*il) ){
00907       const PixelBarrelLayer* pbl = dynamic_cast<const PixelBarrelLayer*>(*il);
00908       LogTrace("CkfDebugger") << "pbl->specificSurface().bounds().length()=" << pbl->specificSurface().bounds().length() ;
00909       LogTrace("CkfDebugger") << "pbl->specificSurface().bounds().width()=" << pbl->specificSurface().bounds().width() ;
00910     }
00911     int layId = layer(((*(*il)->basicComponents().begin())));
00912     LogTrace("CkfDebugger") << " subdet=" << (*(*il)->basicComponents().begin())->geographicalId().subdetId() << "layer id=" << layId ;
00913     if (layId==correctLayId) {
00914       test = true;
00915       detLayer = &**il;
00916       break;
00917     }
00918     if ( lless( *il, theGeomSearchTracker->detLayer(correctRecHit->det()->geographicalId()) )) 
00919       navLayerAfter = true; //it is enough that only one layer is after the correct one?
00920   }
00921 
00922   if (test) {
00923     edm::LogVerbatim("CkfDebugger") << "correct layer taken into account. layer id: " << correctLayId ;
00924   } else if (navLayerAfter){
00925     edm::LogVerbatim("CkfDebugger")<< "SimHit layer after the layers returned by Navigation.";
00926     edm::LogVerbatim("CkfDebugger")<< "Probably a missing SimHit." ;
00927     edm::LogVerbatim("CkfDebugger")<< "check: " << (correctRecHit->det()->geographicalId().subdetId()) << " " << (layer(correctRecHit->det()));
00928     dump6[pair<int,int>((correctRecHit->det()->geographicalId().subdetId()-1),(layer(correctRecHit->det()))-1)]++; 
00929     no_sim_hit++;return 16;
00930   }
00931   else {
00932     edm::LogVerbatim("CkfDebugger") << "correct layer NOT taken into account. correct layer id: " << correctLayId ;
00933     layer_not_found++;
00934     return 3;
00935   }
00936 
00937   typedef DetLayer::DetWithState  DetWithState;
00938   vector<DetWithState> compatDets = detLayer->compatibleDets(currentState,*theForwardPropagator,*theChi2);
00939   //   LogTrace("CkfDebugger") << "DEBUGGER" ;
00940   //   LogTrace("CkfDebugger") << "runned compatDets." ;
00941   //   LogTrace("CkfDebugger") << "started from the following TSOS:" ;
00942   //   LogTrace("CkfDebugger") << currentState ;
00943   //   LogTrace("CkfDebugger") << "number of dets found=" << compatDets.size() ;
00944   //   for (vector<DetWithState>::iterator det=compatDets.begin();det!=compatDets.end();det++){
00945   //     unsigned int detId = det->first->geographicalId().rawId();
00946   //     LogTrace("CkfDebugger") << "detId=" << detId ; 
00947   //   }
00948   bool test2 = false;
00949   for (vector<DetWithState>::iterator det=compatDets.begin();det!=compatDets.end();det++){
00950     unsigned int detId = det->first->geographicalId().rawId();
00951     //     LogTrace("CkfDebugger") << "detId=" << detId 
00952     //   << "\ncorrectRecHit->det()->geographicalId().rawId()=" << correctRecHit->det()->geographicalId().rawId() 
00953     //   << "\ngluedId(correctRecHit->det()->geographicalId()).rawId()=" << gluedId(correctRecHit->det()->geographicalId()).rawId()
00954     //   ; 
00955     if (detId==gluedId(correctRecHit->det()->geographicalId()).rawId()) {
00956       test2=true;
00957       break;
00958     }
00959   }
00960   
00961   if (test2){
00962     edm::LogVerbatim("CkfDebugger") << "correct det taken into account. correctDetId is: " << correctDetId 
00963                                     << ". please check chi2." ;
00964     return 5;
00965   }
00966   else {
00967     edm::LogVerbatim("CkfDebugger") << "correct det NOT taken into account. correctDetId: " << correctDetId ;
00968     det_not_found++;return 4;
00969   }
00970 
00971 }

bool CkfDebugger::associated ( CTTRHp  rechit,
const PSimHit sh 
) const [private]

Definition at line 600 of file CkfDebugger.cc.

References TrackerHitAssociator::associateHit(), e, hitAssociator, LogTrace, PSimHit::pabs(), and PSimHit::timeOfFlight().

Referenced by analyseRecHitExistance(), and correctMeas().

00601 {
00602   LogTrace("CkfDebugger") << "now in associated" ;
00603 
00604   if (!rechit->isValid()) return false;
00605   //   LogTrace("CkfDebugger") << "rec hit valid" ;
00606   const vector<PSimHit>& pSimHitVec = hitAssociator->associateHit(*rechit->hit());
00607   //   LogTrace("CkfDebugger") << "size=" << pSimHitVec.size() ;
00608   for (vector<PSimHit>::const_iterator shit=pSimHitVec.begin();shit!=pSimHitVec.end();shit++){
00609     //const GeomDetUnit* detUnit = theTrackerGeom->idToDetUnit( DetId(shit->detUnitId()));
00610     //         LogTrace("CkfDebugger") << "pSimHit.timeOfFlight()=" << pSimHit.timeOfFlight() 
00611     //           << " pSimHit.pabs()=" << pSimHit.pabs() << " GP=" << position(&pSimHit);
00612     //         LogTrace("CkfDebugger") << "(*shit).timeOfFlight()=" << (*shit).timeOfFlight() 
00613     //           << " (*shit).pabs()=" << (*shit).pabs() << " GP=" << detUnit->toGlobal( shit->localPosition());
00614     if ( ( fabs((*shit).timeOfFlight()-pSimHit.timeOfFlight())<1e-9  ) && 
00615          ( fabs((*shit).pabs()-pSimHit.pabs())<1e-9 ) ) return true;
00616   }
00617   return false;
00618 }

int CkfDebugger::assocTrackId ( CTTRHp  rechit  )  const [private]

Definition at line 497 of file CkfDebugger.cc.

References TrackerHitAssociator::associateHitId(), hitAssociator, and LogTrace.

Referenced by correctMeas().

00498 {
00499   LogTrace("CkfDebugger") << "now in assocTrackId" ;
00500 
00501   if (!rechit->hit()->isValid()) {
00502     return -1;
00503   }
00504 
00505   std::vector<SimHitIdpr> ids = hitAssociator->associateHitId(*rechit->hit());
00506   if (ids.size()!=0) {
00507     return ids[0].first;//FIXME if size>1!!
00508   }
00509   else {
00510     return -1;
00511   }
00512 }

std::pair<double,double> CkfDebugger::computePulls ( CTTRHp  recHit,
TSOS  startingState 
) [inline, private]

Definition at line 200 of file CkfDebugger.h.

References Exception.

00200                                                                          {
00201         switch (recHit->dimension()) {
00202                 case 1: return computePulls<1>(recHit,startingState);
00203                 case 2: return computePulls<2>(recHit,startingState);
00204                 case 3: return computePulls<3>(recHit,startingState);
00205                 case 4: return computePulls<4>(recHit,startingState);
00206                 case 5: return computePulls<5>(recHit,startingState);
00207         }
00208         throw cms::Exception("CkfDebugger error: rechit of dimension not 1,2,3,4,5");
00209   }

template<unsigned int D>
std::pair<double,double> CkfDebugger::computePulls ( CTTRHp  recHit,
TSOS  startingState 
) [inline, private]

Definition at line 178 of file CkfDebugger.h.

References funct::D, LogTrace, me, MeasurementExtractor::measuredError(), MeasurementExtractor::measuredParameters(), Propagator::propagate(), dttmaxenums::R, r, funct::sqrt(), and theForwardPropagator.

Referenced by analyseCompatibleMeasurements().

00178                                                                         {
00179     typedef typename AlgebraicROOTObject<D>::Vector VecD;
00180     typedef typename AlgebraicROOTObject<D,D>::SymMatrix SMatDD;
00181     TSOS detState = theForwardPropagator->propagate(startingState,recHit->det()->surface());
00182     LogTrace("CkfDebugger") << "parameters=" << recHit->parameters() ;
00183     LogTrace("CkfDebugger") << "parametersError=" << recHit->parametersError() ;
00184     MeasurementExtractor me(detState);
00185     VecD r = asSVector<D>(recHit->parameters()) - me.measuredParameters<D>(*recHit);
00186     LogTrace("CkfDebugger") << "me.measuredParameters=" << me.measuredParameters<D>(*recHit) ;
00187     LogTrace("CkfDebugger") << "me.measuredError=" << me.measuredError<D>(*recHit) ;
00188     SMatDD R = asSMatrix<D>(recHit->parametersError()) + me.measuredError<D>(*recHit);
00189     LogTrace("CkfDebugger") << "r=" << r ;
00190     LogTrace("CkfDebugger") << "R=" << R ;
00191     R.Invert();
00192     LogTrace("CkfDebugger") << "R(-1)=" << R ;
00193     LogTrace("CkfDebugger") << "chi2=" << ROOT::Math::Similarity(r,R) ;
00194     double pullX=(-r[0])*sqrt(R(0,0));
00195     double pullY=(-r[1])*sqrt(R(1,1));
00196     LogTrace("CkfDebugger") << "pullX=" << pullX ;
00197     LogTrace("CkfDebugger") << "pullY=" << pullY ;
00198     return  std::pair<double,double>(pullX,pullY);
00199   }

bool CkfDebugger::correctMeas ( const TM tm,
const PSimHit correctHit 
) const [private]

Definition at line 620 of file CkfDebugger.cc.

References associated(), TrackerHitAssociator::associateHitId(), assocTrackId(), hitAssociator, int, j, LogTrace, TrajectoryMeasurement::recHit(), parsecf::pyparsing::test(), and PSimHit::trackId().

Referenced by analyseCompatibleMeasurements().

00621 {
00622   LogTrace("CkfDebugger") << "now in correctMeas" ;
00623   CTTRHp recHit = tm.recHit();
00624   if (recHit->isValid()) LogTrace("CkfDebugger") << "hit at position:" << recHit->globalPosition() ;
00625   TransientTrackingRecHit::RecHitContainer comp = recHit->transientHits();
00626   if (comp.empty()) {
00627     //     LogTrace("CkfDebugger") << "comp.empty()==true" ;
00628     return associated( recHit, *correctHit);
00629   }
00630   else {
00631     for (TransientTrackingRecHit::RecHitContainer::const_iterator ch=comp.begin(); 
00632          ch!=comp.end(); ++ch) {
00633       if ( associated( recHit, *correctHit)) {
00634         // check if the other components are associated to the same trackId
00635         for (TransientTrackingRecHit::RecHitContainer::const_iterator ch2=comp.begin(); 
00636              ch2!=comp.end(); ++ch2) {
00637           if (ch2 == ch) continue;
00639           //      LogTrace("CkfDebugger") << "correctHit->trackId()=" << correctHit->trackId() ;
00640           bool test=true;
00641           vector<SimHitIdpr> ids = hitAssociator->associateHitId(*(*ch2)->hit());
00642           for (vector<SimHitIdpr>::iterator j=ids.begin();j!=ids.end();j++){
00643             //      LogTrace("CkfDebugger") << "j=" <<j->first;
00644             if (correctHit->trackId()==j->first) {
00645               test=false;
00646               //              LogTrace("CkfDebugger") << correctHit->trackId()<< " " <<j->first;
00647             }
00648           }
00649           if (assocTrackId( *ch2) != ((int)( correctHit->trackId())) ) {LogTrace("CkfDebugger") << "returning false 1" ;/*return false;*/}//fixme
00650           if (test) {
00651             //      LogTrace("CkfDebugger") << "returning false 2" ;
00652             return false; // not all components from same simtrack
00653           }
00654           //      if (assocTrackId( **ch2) != ((int)( correctHit->trackId())) ) {
00655           //        return false; // not all components from same simtrack
00656           //      }
00657         }
00658         return true; // if all components from same simtrack
00659       }
00660     }
00661     return false;
00662   }
00663 }

bool CkfDebugger::correctTrajectory ( const Trajectory traj,
unsigned int trajId 
) const [private]

Definition at line 455 of file CkfDebugger.cc.

References TrackerHitAssociator::associateHit(), TrackerHitAssociator::associateHitId(), goodSimHit(), hitAssociator, i, j, LogTrace, Trajectory::recHits(), and parsecf::pyparsing::test().

Referenced by analyseCompatibleMeasurements().

00456 {
00457   LogTrace("CkfDebugger") << "now in correctTrajectory" ;
00458   Trajectory::RecHitContainer hits = traj.recHits();
00459 
00460   std::vector<SimHitIdpr> currentTrackId = hitAssociator->associateHitId(*hits.front()->hit());
00461   if (currentTrackId.size() == 0) return false;
00462 
00463   for (Trajectory::RecHitContainer::const_iterator rh=hits.begin(); rh!=hits.end(); ++rh) {
00464 
00465     //if invalid hit exit
00466     if (!(*rh)->hit()->isValid()) {
00467       //LogTrace("CkfDebugger") << "invalid hit" ;
00468       return false;
00469     }
00470 
00471     //if hits from deltas exit
00472     bool nogoodhit = true;
00473     vector<PSimHit> assSimHits = hitAssociator->associateHit(*(*rh)->hit());
00474     for (vector<PSimHit>::iterator shit=assSimHits.begin();shit!=assSimHits.end();shit++){
00475       if (goodSimHit(*shit)) nogoodhit=false;
00476     }
00477     if (nogoodhit) return false;
00478     
00479     //all hits must be associated to the same sim track
00480     bool test = true;
00481     std::vector<SimHitIdpr> nextTrackId = hitAssociator->associateHitId(*(*rh)->hit());
00482     for (vector<SimHitIdpr>::iterator i=currentTrackId.begin();i!=currentTrackId.end();i++){
00483       for (vector<SimHitIdpr>::iterator j=nextTrackId.begin();j!=nextTrackId.end();j++){
00484         if (i->first == j->first) test = false;
00485         //LogTrace("CkfDebugger") << "valid " << *i << " " << *j ;
00486         trajId = j->first;
00487       }
00488     }
00489     if (test) {/*LogTrace("CkfDebugger") << "returning false" ;*/return false;}
00490     //     std::vector<PSimHit*> simTrackHits = idHitsMap[trajId];
00491     //     if (!goodSimHit(simTrackHits.))
00492   }
00493   //LogTrace("CkfDebugger") << "returning true" ;
00494   return true;
00495 }

void CkfDebugger::countSeed (  )  [inline]

Definition at line 56 of file CkfDebugger.h.

References totSeeds.

Referenced by cms::CkfDebugTrackCandidateMaker::countSeedsDebugger().

00056 {totSeeds++;}

void CkfDebugger::deleteHitAssociator (  )  [inline]

Definition at line 70 of file CkfDebugger.h.

References hitAssociator.

Referenced by cms::CkfDebugTrackCandidateMaker::deleteAssocDebugger().

00070                             {
00071     delete hitAssociator;
00072   }

const GeomDetUnit* CkfDebugger::det ( const PSimHit sh  )  const [inline, private]

Definition at line 152 of file CkfDebugger.h.

References PSimHit::detUnitId(), TrackerGeometry::idToDetUnit(), and theTrackerGeom.

Referenced by analyseCompatibleMeasurements(), analyseRecHitExistance(), analyseRecHitNotFound(), and nextCorrectHits().

00152 {return theTrackerGeom->idToDetUnit(DetId(sh->detUnitId()));};

void CkfDebugger::dumpSimHit ( const SimHit hit  )  const [private]

Definition at line 173 of file CkfDebugger.cc.

References CkfDebugger::SimHit::globalPosition(), CkfDebugger::SimHit::pabs(), CkfDebugger::SimHit::particleType(), PV3DBase< T, PVType, FrameType >::perp(), PV3DBase< T, PVType, FrameType >::phi(), and CkfDebugger::SimHit::trackId().

Referenced by printSimHits().

00174 {
00175   GlobalPoint pos = hit.globalPosition();
00176   edm::LogVerbatim("CkfDebugger") << "SimHit pos" << pos
00177                                   << " r=" << pos.perp() << " phi=" << pos.phi() 
00178                                   << " trackId=" << hit.trackId() 
00179                                   << " particleType=" << hit.particleType() 
00180                                   << " pabs=" << hit.pabs() 
00181                                   << " processType=" << hit. processType();
00182 }

void CkfDebugger::fillSeedHist ( CTTRHp  h1,
CTTRHp  h2,
TrajectoryStateOnSurface  t 
) [inline]

Definition at line 58 of file CkfDebugger.h.

References hchi2seedAll, and testSeed().

Referenced by CkfDebugTrajectoryBuilder::fillSeedHistoDebugger().

00058                                                                      {
00059     //edm::LogVerbatim("CkfDebugger") << "CkfDebugger::fillSeedHist";
00060     hchi2seedAll->Fill( testSeed(h1,h2,t) );
00061   }

bool CkfDebugger::goodSimHit ( const PSimHit sh  )  const [private]

Definition at line 593 of file CkfDebugger.cc.

References PSimHit::pabs().

Referenced by correctTrajectory(), nextCorrectHits(), and pSimHit().

00594 {
00595   if (sh.pabs() > 0.9) return true; // GeV, reject delta rays from association
00596   else return false;
00597 }

bool CkfDebugger::hasDelta ( const PSimHit correctHit  )  [inline, private]

Definition at line 138 of file CkfDebugger.h.

References PSimHit::detUnitId(), hitAssociator, and TrackerHitAssociator::SimHitMap.

Referenced by analyseCompatibleMeasurements(), and testSeed().

00138                                           {
00139     bool delta = false;
00140     for (std::vector<PSimHit>::iterator isim = hitAssociator->SimHitMap[correctHit->detUnitId()].begin();
00141          isim != hitAssociator->SimHitMap[correctHit->detUnitId()].end(); ++isim){ 
00142 /*       edm::LogVerbatim("CkfDebugger") << "SimHit on this det at pos="<< position(&*isim)  */
00143 /*           << " det=" << isim->detUnitId() << " process=" << isim->processType() ; */
00144       if (isim->processType() == 9) delta = true;
00145     }
00146     return delta;
00147   }

int CkfDebugger::layer ( const GeomDet det  )  [inline, private]

Definition at line 165 of file CkfDebugger.h.

References GeomDet::geographicalId().

00165                                {
00166     //return ((int)(((det->geographicalId().rawId() >>16) & 0xF)));
00167     DetId id=det->geographicalId();
00168     if (id.subdetId()==3) return ((TIBDetId)(id)).layer();
00169     if (id.subdetId()==5) return ((TOBDetId)(id)).layer();
00170     if (id.subdetId()==1) return ((PXBDetId)(id)).layer();
00171     if (id.subdetId()==4) return ((TIDDetId)(id)).wheel();
00172     if (id.subdetId()==6) return ((TECDetId)(id)).wheel();
00173     if (id.subdetId()==2) return ((PXFDetId)(id)).disk();
00174     return 0;
00175   }

int CkfDebugger::layer ( const GeomDetUnit det  )  [inline, private]

Definition at line 154 of file CkfDebugger.h.

References GeomDet::geographicalId().

Referenced by analyseCompatibleMeasurements(), analyseRecHitExistance(), analyseRecHitNotFound(), and nextCorrectHits().

00154                                    {
00155     //return ((int)(((det->geographicalId().rawId() >>16) & 0xF)));
00156     DetId id=det->geographicalId();
00157     if (id.subdetId()==3) return ((TIBDetId)(id)).layer();
00158     if (id.subdetId()==5) return ((TOBDetId)(id)).layer();
00159     if (id.subdetId()==1) return ((PXBDetId)(id)).layer();
00160     if (id.subdetId()==4) return ((TIDDetId)(id)).wheel();
00161     if (id.subdetId()==6) return ((TECDetId)(id)).wheel();
00162     if (id.subdetId()==2) return ((PXFDetId)(id)).disk();
00163     return 0;
00164   }

vector< const PSimHit * > CkfDebugger::nextCorrectHits ( const Trajectory traj,
unsigned int trajId 
) [private]

Definition at line 515 of file CkfDebugger.cc.

References TrackerHitAssociator::associateHit(), det(), PSimHit::detUnitId(), GeomDet::geographicalId(), goodSimHit(), hitAssociator, idHitsMap, TrackerGeometry::idToDetUnit(), it, Trajectory::lastMeasurement(), layer(), LogTrace, position(), TrajectoryMeasurement::recHit(), HLT_VtxMuL3::result, DetId::subdetId(), theTrackerGeom, PSimHit::timeOfFlight(), and GeomDet::toGlobal().

Referenced by analyseCompatibleMeasurements().

00516 {
00517   vector<const PSimHit*> result;
00518   // find the component of the RecHit at largest distance from origin (FIXME: should depend on propagation direction)
00519   LogTrace("CkfDebugger") << "now in nextCorrectHits" ;
00520   TransientTrackingRecHit::ConstRecHitPointer lastRecHit = traj.lastMeasurement().recHit();
00521   TransientTrackingRecHit::RecHitContainer comp = lastRecHit->transientHits();
00522   if (!comp.empty()) {
00523     float maxR = 0;
00524     for (TransientTrackingRecHit::RecHitContainer::const_iterator ch=comp.begin(); 
00525          ch!=comp.end(); ++ch) {
00526       if ((*ch)->globalPosition().mag() > maxR) lastRecHit = *ch; 
00527       maxR = (*ch)->globalPosition().mag();
00528     }
00529   }
00530   edm::LogVerbatim("CkfDebugger") << "CkfDebugger: lastRecHit is at gpos " << lastRecHit->globalPosition() 
00531                                   << " layer " << layer((lastRecHit->det())) 
00532                                   << " subdet " << lastRecHit->det()->geographicalId().subdetId() ;
00533 
00534   //find the simHits associated to the recHit
00535   const vector<PSimHit>& pSimHitVec = hitAssociator->associateHit(*lastRecHit->hit());
00536   for (vector<PSimHit>::const_iterator shit=pSimHitVec.begin();shit!=pSimHitVec.end();shit++){
00537     const GeomDetUnit* detUnit = theTrackerGeom->idToDetUnit( DetId(shit->detUnitId()));
00538     LogTrace("CkfDebugger") << "from hitAssociator SimHits are at GP=" << detUnit->toGlobal( shit->localPosition())
00539                                     << " traId=" << shit->trackId() << " particleType " << shit->particleType() 
00540                                     << " pabs=" << shit->pabs() << " detUnitId=" << shit->detUnitId() << " layer " << layer((det(&*shit))) 
00541                                     << " subdet " << det(&*shit)->geographicalId().subdetId() ;
00542   }
00543 
00544   //choose the simHit from the same track that has the highest tof
00545   const PSimHit * lastPSH = 0;
00546   if (!pSimHitVec.empty()) {
00547     float maxTOF = 0;
00548     for (vector<PSimHit>::const_iterator ch=pSimHitVec.begin(); ch!=pSimHitVec.end(); ++ch) {
00549       if ( ( ch->trackId()== trajId) && (ch->timeOfFlight() > maxTOF)  && ( goodSimHit(*ch) )) {
00550         lastPSH = &*ch; 
00551         maxTOF = lastPSH->timeOfFlight();
00552       }
00553     }
00554   }
00555   else return result;//return empty vector: no more hits on the sim track
00556   if (lastPSH == 0) return result; //return empty vector: no more good hits on the sim track
00557   edm::LogVerbatim("CkfDebugger") << "CkfDebugger: corresponding SimHit is at gpos " << position(&*lastPSH) ;
00558 
00559   //take the simHits on the simTrack that are in the nextLayer (could be > 1 if overlap or matched)
00560   vector<PSimHit*> trackHits = idHitsMap[trajId];
00561   if (fabs((double)(trackHits.back()->detUnitId()-lastPSH->detUnitId()))<1 ) return result;//end of sim track
00562   vector<PSimHit*>::iterator currentIt = trackHits.end();
00563   for (vector<PSimHit*>::iterator it=trackHits.begin();
00564        it!=trackHits.end();it++){
00565     if (goodSimHit(**it) && //good hit
00566         ( lastPSH->timeOfFlight()<(*it)->timeOfFlight() ) && //greater tof
00567         //( fabs((double)((*it)->detUnitId()-(lastPSH->detUnitId()) ))>1) && //not components of the same matched hit
00568         ( (det(lastPSH)->geographicalId().subdetId()!=det(*it)->geographicalId().subdetId()) || 
00569           (layer(det(lastPSH))!=layer(det(*it)) ) ) //change layer or detector(tib,tob,...)
00570         ){
00571       edm::LogVerbatim("CkfDebugger") << "Next good PSimHit is at gpos " << position(*it) ;
00572       result.push_back(*it);
00573       currentIt = it;
00574       break;
00575     }
00576   }
00577   bool samelayer = true;
00578   if (currentIt!=(trackHits.end()-1) && currentIt!=trackHits.end()) {
00579     for (vector<PSimHit*>::iterator nextIt = currentIt; (samelayer && nextIt!=trackHits.end()) ;nextIt++){
00580       if (goodSimHit(**nextIt)){
00581         if ( (det(*nextIt)->geographicalId().subdetId()==det(*currentIt)->geographicalId().subdetId()) && 
00582              (layer(det(*nextIt))==layer(det(*currentIt)) ) ) {
00583           result.push_back(*nextIt);
00584         }
00585         else samelayer = false;
00586       }
00587     }
00588   }
00589   
00590   return result;
00591 }

Global3DPoint CkfDebugger::position ( const PSimHit sh  )  const [inline, private]

Definition at line 149 of file CkfDebugger.h.

References PSimHit::detUnitId(), TrackerGeometry::idToDetUnit(), PSimHit::localPosition(), theTrackerGeom, and GeomDet::toGlobal().

Referenced by analyseCompatibleMeasurements(), analyseRecHitExistance(), and nextCorrectHits().

00149                                                   {
00150     return theTrackerGeom->idToDetUnit(DetId(sh->detUnitId()))->toGlobal(sh->localPosition());
00151   };

void CkfDebugger::printSimHits ( const edm::Event iEvent  ) 

Definition at line 144 of file CkfDebugger.cc.

References dumpSimHit(), hitAssociator, edm::Event::id(), idHitsMap, TrackerGeometry::idToDetUnit(), it, TrackerHitAssociator::SimHitMap, python::multivaluedict::sort(), theTrackerGeom, and TrackerHitAssociator::TrackerHitAssociator().

Referenced by cms::CkfDebugTrackCandidateMaker::printHitsDebugger().

00145 {
00146   edm::LogVerbatim("CkfDebugger") << "\nEVENT #" << iEvent.id();
00147 
00148   hitAssociator = new TrackerHitAssociator::TrackerHitAssociator(iEvent);//delete deleteHitAssociator() in TrackCandMaker.cc
00149 
00150   map<unsigned int, std::vector<PSimHit> >& theHitsMap = hitAssociator->SimHitMap;
00151   idHitsMap.clear();
00152 
00153   for (map<unsigned int, std::vector<PSimHit> >::iterator it=theHitsMap.begin();
00154        it!=theHitsMap.end();it++){
00155     for (vector<PSimHit>::iterator isim = it->second.begin();
00156          isim != it->second.end(); ++isim){
00157       idHitsMap[isim->trackId()].push_back(&*isim);
00158     }
00159   }
00160   
00161   for (map<unsigned int,std::vector<PSimHit*> >::iterator it=idHitsMap.begin();
00162        it!=idHitsMap.end();it++){
00163     sort(it->second.begin(),it->second.end(),less_mag());
00164     for (vector<PSimHit*>::iterator isim = it->second.begin();
00165          isim != it->second.end(); ++isim){
00166       const GeomDetUnit* detUnit = theTrackerGeom->idToDetUnit( DetId((*isim)->detUnitId()));
00167       dumpSimHit(SimHit( (*isim), detUnit));
00168     }
00169   }
00170   
00171 }

const PSimHit * CkfDebugger::pSimHit ( unsigned int  tkId,
DetId  detId 
) [private]

Definition at line 876 of file CkfDebugger.cc.

References begin, goodSimHit(), idHitsMap, and DetId::rawId().

Referenced by analyseRecHitExistance().

00877 {
00878   for (vector<PSimHit*>::iterator shi=idHitsMap[tkId].begin(); shi!=idHitsMap[tkId].end(); ++shi) {    
00879     if ( (*shi)->detUnitId() == detId.rawId() && 
00880          //(shi)->trackId() == tkId &&
00881          goodSimHit(**shi) ) {
00882       return (*shi);
00883     }
00884   }
00885   return 0;
00886 }

double CkfDebugger::testSeed ( CTTRHp  recHit1,
CTTRHp  recHit2,
TrajectoryStateOnSurface  state 
) [private]

Definition at line 973 of file CkfDebugger.cc.

References TrackerHitAssociator::associateHit(), hasDelta(), hitAssociator, TrajectoryStateOnSurface::localError(), TrajectoryStateOnSurface::localParameters(), PSimHit::localPosition(), LogTrace, PV3DBase< T, PVType, FrameType >::mag(), LocalTrajectoryError::matrix(), PSimHit::momentumAtEntry(), dttmaxenums::R, v, LocalTrajectoryParameters::vector(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by analyseCompatibleMeasurements(), and fillSeedHist().

00973                                                                       {
00974   //edm::LogVerbatim("CkfDebugger") << "CkfDebugger::testSeed";
00975   //test Deltas
00976   const vector<PSimHit>& pSimHitVec1 = hitAssociator->associateHit(*recHit1->hit());
00977   const vector<PSimHit>& pSimHitVec2 = hitAssociator->associateHit(*recHit2->hit());
00978   
00979   if ( pSimHitVec1.size()==0 || pSimHitVec2.size()==0 || hasDelta(&(*pSimHitVec1.begin())) || hasDelta(&(*pSimHitVec2.begin())) ) {
00980     edm::LogVerbatim("CkfDebugger") << "Seed has delta or problems" ;
00981     return -1;
00982   }
00983 
00984   //   LogTrace("CkfDebugger") << "state=\n" << state ;
00985   //   double stlp1 = state.localParameters().vector()[0];
00986   //   double stlp2 = state.localParameters().vector()[1];
00987   //   double stlp3 = state.localParameters().vector()[2];
00988   //   double stlp4 = state.localParameters().vector()[3];
00989   //   double stlp5 = state.localParameters().vector()[4];
00990 
00991   if (pSimHitVec2.size()!=0) {
00992     const PSimHit& simHit = *pSimHitVec2.begin();
00993     
00994     double shlp1 = -1/simHit.momentumAtEntry().mag();
00995     double shlp2 = simHit.momentumAtEntry().x()/simHit.momentumAtEntry().z();
00996     double shlp3 = simHit.momentumAtEntry().y()/simHit.momentumAtEntry().z();
00997     double shlp4 = simHit.localPosition().x();
00998     double shlp5 = simHit.localPosition().y();
00999     AlgebraicVector5 v;
01000     v[0] = shlp1;
01001     v[1] = shlp2;
01002     v[2] = shlp3;
01003     v[3] = shlp4;
01004     v[4] = shlp5;
01005   
01006     //     LogTrace("CkfDebugger") << "simHit.localPosition()=" << simHit.localPosition() ;
01007     //     LogTrace("CkfDebugger") << "simHit.momentumAtEntry()=" << simHit.momentumAtEntry() ;
01008     //     LogTrace("CkfDebugger") << "recHit2->localPosition()=" << recHit2->localPosition() ;
01009     //     LogTrace("CkfDebugger") << "recHit2->localPositionError()=" << recHit2->localPositionError() ;
01010     //     LogTrace("CkfDebugger") << "state.localPosition()=" << state.localPosition() ;
01011     //     LogTrace("CkfDebugger") << "state.localError().positionError()=" << state.localError().positionError() ;
01012 
01013     //     LogTrace("CkfDebugger") << "pullx(sh-rh)=" << (simHit.localPosition().x()-recHit2->localPosition().x())/sqrt(recHit2->localPositionError().xx()) ;
01014     //     LogTrace("CkfDebugger") << "pullx(sh-st)=" << (simHit.localPosition().x()-state.localPosition().x())/sqrt(state.localError().positionError().xx()) ;
01015     //     LogTrace("CkfDebugger") << "pullx(st-rh)=" << (state.localPosition().x()-recHit2->localPosition().x())/
01016     //       sqrt(recHit2->localPositionError().xx()+state.localError().positionError().xx()) ;
01017 
01018     //     LogTrace("CkfDebugger") << "local parameters" ;
01019     //     LogTrace("CkfDebugger") << left;
01020     //     LogTrace("CkfDebugger") << setw(15) << stlp1 << setw(15) << shlp1 << setw(15) << sqrt(state.localError().matrix()[0][0]) 
01021     //   << setw(15) << (stlp1-shlp1)/stlp1 << setw(15) << (stlp1-shlp1)/sqrt(state.localError().matrix()[0][0]) ;
01022     //     LogTrace("CkfDebugger") << setw(15) << stlp2 << setw(15) << shlp2 << setw(15) << sqrt(state.localError().matrix()[1][1]) 
01023     //   << setw(15) << (stlp2-shlp2)/stlp2 << setw(15) << (stlp2-shlp2)/sqrt(state.localError().matrix()[1][1]) ;
01024     //     LogTrace("CkfDebugger") << setw(15) << stlp3 << setw(15) << shlp3 << setw(15) << sqrt(state.localError().matrix()[2][2]) 
01025     //       << setw(15) << (stlp3-shlp3)/stlp3 << setw(15) << (stlp3-shlp3)/sqrt(state.localError().matrix()[2][2]) ;
01026     //     LogTrace("CkfDebugger") << setw(15) << stlp4 << setw(15) << shlp4 << setw(15) << sqrt(state.localError().matrix()[3][3]) 
01027     //       << setw(15) << (stlp4-shlp4)/stlp4 << setw(15) << (stlp4-shlp4)/sqrt(state.localError().matrix()[3][3]) ;
01028     //     LogTrace("CkfDebugger") << setw(15) << stlp5 << setw(15) << shlp5 << setw(15) << sqrt(state.localError().matrix()[4][4]) << 
01029     //       setw(15) << (stlp5-shlp5)/stlp5 << setw(15) << (stlp5-shlp5)/sqrt(state.localError().matrix()[4][4]) ;
01030 
01031     AlgebraicSymMatrix55 R = state.localError().matrix();
01032     R.Invert();
01033     double chi2 = ROOT::Math::Similarity(v-state.localParameters().vector(), R);
01034     LogTrace("CkfDebugger") << "chi2=" << chi2 ;
01035     return chi2;
01036   }
01037 
01038   return 0;//fixme
01039 
01040 }


Member Data Documentation

int CkfDebugger::chi2gt30 [private]

Definition at line 252 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

int CkfDebugger::chi2gt30delta [private]

Definition at line 253 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

int CkfDebugger::chi2gt30deltaSeed [private]

Definition at line 254 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

int CkfDebugger::chi2ls30 [private]

Definition at line 255 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

int CkfDebugger::det_not_found [private]

Definition at line 251 of file CkfDebugger.h.

Referenced by analyseRecHitNotFound(), CkfDebugger(), and ~CkfDebugger().

std::vector<int> CkfDebugger::dump [private]

Definition at line 211 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<std::pair<int,int>, int> CkfDebugger::dump2 [private]

Definition at line 212 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<std::pair<int,int>, int> CkfDebugger::dump3 [private]

Definition at line 213 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<std::pair<int,int>, int> CkfDebugger::dump4 [private]

Definition at line 214 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<std::pair<int,int>, int> CkfDebugger::dump5 [private]

Definition at line 215 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<std::pair<int,int>, int> CkfDebugger::dump6 [private]

Definition at line 216 of file CkfDebugger.h.

Referenced by analyseRecHitNotFound(), CkfDebugger(), and ~CkfDebugger().

TFile* CkfDebugger::file [private]

Definition at line 218 of file CkfDebugger.h.

Referenced by CkfDebugger(), and ~CkfDebugger().

int CkfDebugger::glued_det_not_fuond [private]

Definition at line 262 of file CkfDebugger.h.

Referenced by analyseRecHitExistance(), CkfDebugger(), and ~CkfDebugger().

TH1F* CkfDebugger::hchi2seedAll [private]

Definition at line 219 of file CkfDebugger.h.

Referenced by CkfDebugger(), fillSeedHist(), and ~CkfDebugger().

TH1F * CkfDebugger::hchi2seedProb [private]

Definition at line 219 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

TrackerHitAssociator* CkfDebugger::hitAssociator [private]

Definition at line 109 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), associated(), assocTrackId(), correctMeas(), correctTrajectory(), deleteHitAssociator(), hasDelta(), nextCorrectHits(), printSimHits(), and testSeed().

std::map<std::string,TH1F*> CkfDebugger::hPullGP_X_shst [private]

Definition at line 235 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<std::string,TH1F*> CkfDebugger::hPullGP_Y_shst [private]

Definition at line 236 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<std::string,TH1F*> CkfDebugger::hPullGP_Z_shst [private]

Definition at line 237 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

TH2F* CkfDebugger::hPullGPXvsGPeta_shst [private]

Definition at line 243 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

TH2F* CkfDebugger::hPullGPXvsGPphi_shst [private]

Definition at line 244 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

TH2F* CkfDebugger::hPullGPXvsGPr_shst [private]

Definition at line 242 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

TH2F* CkfDebugger::hPullGPXvsGPX_shst [private]

Definition at line 239 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

TH2F* CkfDebugger::hPullGPXvsGPY_shst [private]

Definition at line 240 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

TH2F* CkfDebugger::hPullGPXvsGPZ_shst [private]

Definition at line 241 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<std::string,TH1F*> CkfDebugger::hPullM_shrh [private]

Definition at line 228 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<std::string,TH1F*> CkfDebugger::hPullM_shst [private]

Definition at line 230 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<std::string,TH1F*> CkfDebugger::hPullM_strh [private]

Definition at line 232 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<std::string,TH1F*> CkfDebugger::hPullS_shrh [private]

Definition at line 229 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<std::string,TH1F*> CkfDebugger::hPullS_shst [private]

Definition at line 231 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<std::string,TH1F*> CkfDebugger::hPullS_strh [private]

Definition at line 233 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<std::string,TH1F*> CkfDebugger::hPullX_shrh [private]

Definition at line 221 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<std::string,TH1F*> CkfDebugger::hPullX_shst [private]

Definition at line 223 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<std::string,TH1F*> CkfDebugger::hPullX_strh [private]

Definition at line 225 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<std::string,TH1F*> CkfDebugger::hPullY_shrh [private]

Definition at line 222 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<std::string,TH1F*> CkfDebugger::hPullY_shst [private]

Definition at line 224 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<std::string,TH1F*> CkfDebugger::hPullY_strh [private]

Definition at line 226 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

std::map<unsigned int, std::vector<PSimHit*> > CkfDebugger::idHitsMap [private]

Definition at line 113 of file CkfDebugger.h.

Referenced by nextCorrectHits(), printSimHits(), and pSimHit().

int CkfDebugger::layer_not_found [private]

Definition at line 250 of file CkfDebugger.h.

Referenced by analyseRecHitNotFound(), CkfDebugger(), and ~CkfDebugger().

int CkfDebugger::matched_not_associated [private]

Definition at line 260 of file CkfDebugger.h.

Referenced by analyseRecHitExistance(), CkfDebugger(), and ~CkfDebugger().

int CkfDebugger::matched_not_found [private]

Definition at line 259 of file CkfDebugger.h.

Referenced by analyseRecHitExistance(), CkfDebugger(), and ~CkfDebugger().

int CkfDebugger::no_component [private]

Definition at line 257 of file CkfDebugger.h.

Referenced by analyseRecHitExistance(), CkfDebugger(), and ~CkfDebugger().

int CkfDebugger::no_layer [private]

Definition at line 249 of file CkfDebugger.h.

Referenced by analyseRecHitNotFound(), CkfDebugger(), and ~CkfDebugger().

int CkfDebugger::no_sim_hit [private]

Definition at line 248 of file CkfDebugger.h.

Referenced by analyseRecHitNotFound(), CkfDebugger(), and ~CkfDebugger().

int CkfDebugger::only_one_component [private]

Definition at line 258 of file CkfDebugger.h.

Referenced by analyseRecHitExistance(), CkfDebugger(), and ~CkfDebugger().

int CkfDebugger::other [private]

Definition at line 264 of file CkfDebugger.h.

Referenced by analyseRecHitExistance(), CkfDebugger(), and ~CkfDebugger().

int CkfDebugger::partner_det_not_fuond [private]

Definition at line 261 of file CkfDebugger.h.

Referenced by analyseRecHitExistance(), CkfDebugger(), and ~CkfDebugger().

int CkfDebugger::problems [private]

Definition at line 247 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

int CkfDebugger::propagation [private]

Definition at line 263 of file CkfDebugger.h.

Referenced by analyseRecHitExistance(), CkfDebugger(), and ~CkfDebugger().

int CkfDebugger::seedWithDelta [private]

Definition at line 246 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

int CkfDebugger::simple_hit_not_found [private]

Definition at line 256 of file CkfDebugger.h.

Referenced by analyseRecHitExistance(), CkfDebugger(), and ~CkfDebugger().

const MeasurementEstimator* CkfDebugger::theChi2 [private]

Definition at line 107 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), analyseRecHitExistance(), and analyseRecHitNotFound().

const Propagator* CkfDebugger::theForwardPropagator [private]

Definition at line 108 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), analyseRecHitExistance(), analyseRecHitNotFound(), and computePulls().

const GeometricSearchTracker* CkfDebugger::theGeomSearchTracker [private]

Definition at line 106 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), and analyseRecHitNotFound().

const MagneticField* CkfDebugger::theMagField [private]

Definition at line 105 of file CkfDebugger.h.

Referenced by analyseRecHitExistance(), and CkfDebugger().

const MeasurementTracker* CkfDebugger::theMeasurementTracker [private]

Definition at line 110 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), and analyseRecHitExistance().

const TrackerGeometry* CkfDebugger::theTrackerGeom [private]

Definition at line 104 of file CkfDebugger.h.

Referenced by CkfDebugger(), det(), nextCorrectHits(), position(), and printSimHits().

const TransientTrackingRecHitBuilder* CkfDebugger::theTTRHBuilder [private]

Definition at line 111 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements().

int CkfDebugger::totchi2gt30 [private]

Definition at line 265 of file CkfDebugger.h.

Referenced by analyseCompatibleMeasurements(), CkfDebugger(), and ~CkfDebugger().

int CkfDebugger::totSeeds [private]

Definition at line 267 of file CkfDebugger.h.

Referenced by countSeed(), and ~CkfDebugger().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:16:20 2009 for CMSSW by  doxygen 1.5.4