70 theTrackFilter_(iConfig.getParameter<edm::
ParameterSet>(
"TkFilterParameters"))
181 std::cout<<
"PrimaryVertexValidation::analyze() looping over "<<trackCollectionHandle->size()<<
"tracks." <<std::endl;
184 for(reco::TrackCollection::const_iterator track = trackCollectionHandle->begin(); track!= trackCollectionHandle->end(); ++track, ++
i)
187 std::cout <<
" PrimaryVertexValidation::analyze() : Warning - Number of tracks: " <<
nTracks_ <<
" , greater than " <<
nMaxtracks_ << std::endl;
220 if((*iHit)->isValid()) {
222 if (this->
isHit2D(**iHit)) {++nRecHit2D;}
225 int type =(*iHit)->geographicalId().subdetId();
231 if(type==
int(
kBPIX)){++nhitinBPIX;}
232 if(type==
int(
kFPIX)){++nhitinFPIX;}
251 bool hasTheProbeFirstPixelLayerHit =
false;
262 std::vector<reco::TransientTrack> transientTracks;
263 for(
size_t j = 0;
j < trackCollectionHandle->size();
j++)
266 if( tk == trackref )
continue;
267 bool hasTheTagFirstPixelLayerHit =
false;
271 transientTracks.push_back(theTT);
275 if(transientTracks.size() > 2){
278 std::cout <<
"PrimaryVertexValidation::analyze() :Transient Track Collection size: "<<transientTracks.size()<<std::endl;
285 if(theFittedVertex.
isValid ()){
288 for(
size_t rtracks= 0; rtracks < transientTracks.size(); rtracks++){
307 std::cout<<
"PrimaryVertexValidation::analyze() :myVertex.x()= "<<myVertex.x()<<
" myVertex.y()= "<<myVertex.y()<<
" theFittedVertex.z()= "<<myVertex.z()<<std::endl;
308 std::cout<<
"PrimaryVertexValidation::analyze() : track->dz(myVertex)= "<<track->dz(myVertex)<<std::endl;
309 std::cout<<
"PrimaryVertexValidation::analyze() : zPCA -myVertex.z() = "<<(track->vertex().z() -myVertex.z() )<<std::endl;
314 LogTrace(
"PrimaryVertexValidation::analyze RECO")<<
"caught std::exception "<<er.
what()<<std::endl;
319 std::cout <<
"PrimaryVertexValidation::analyze() :Not enough tracks to make a vertex. Returns no vertex info" << std::endl;
325 std::cout<<
"Track "<<i<<
" : pT = "<<track->pt()<<std::endl;
340 if (detId.subdetId() ==
kBPIX || detId.subdetId() ==
kFPIX) {
343 if (dynamic_cast<const SiStripRecHit2D*>(&hit))
return false;
344 else if (dynamic_cast<const SiStripMatchedRecHit2D*>(&hit))
return true;
345 else if (dynamic_cast<const ProjectedSiStripRecHit2D*>(&hit))
return false;
347 edm::LogError(
"UnkownType") <<
"@SUB=AlignmentTrackSelector::isHit2D"
348 <<
"Tracker hit not in pixel and neither SiStripRecHit2D nor "
349 <<
"SiStripMatchedRecHit2D nor ProjectedSiStripRecHit2D.";
354 edm::LogWarning(
"DetectorMismatch") <<
"@SUB=AlignmentTrackSelector::isHit2D"
355 <<
"Hit not in tracker with 'official' dimension >=2.";
365 bool accepted =
false;
390 rootTree_ =
new TTree(
"tree",
"PV Validation tree");
393 rootTree_->Branch(
"nTracks",&
nTracks_,
"nTracks/I");
394 rootTree_->Branch(
"pt",&
pt_,
"pt[nTracks]/D");
395 rootTree_->Branch(
"p",&
p_,
"p[nTracks]/D");
396 rootTree_->Branch(
"nhits",&
nhits_,
"nhits[nTracks]/I");
397 rootTree_->Branch(
"nhits1D",&
nhits1D_,
"nhits1D[nTracks]/I");
398 rootTree_->Branch(
"nhits2D",&
nhits2D_,
"nhits2D[nTracks]/I");
399 rootTree_->Branch(
"nhitsBPIX",&
nhitsBPIX_,
"nhitsBPIX[nTracks]/I");
400 rootTree_->Branch(
"nhitsFPIX",&
nhitsFPIX_,
"nhitsFPIX[nTracks]/I");
401 rootTree_->Branch(
"nhitsTIB",&
nhitsTIB_,
"nhitsTIB[nTracks]/I");
402 rootTree_->Branch(
"nhitsTID",&
nhitsTID_,
"nhitsTID[nTracks]/I");
403 rootTree_->Branch(
"nhitsTOB",&
nhitsTOB_,
"nhitsTOB[nTracks]/I");
404 rootTree_->Branch(
"nhitsTEC",&
nhitsTEC_,
"nhitsTEC[nTracks]/I");
405 rootTree_->Branch(
"eta",&
eta_,
"eta[nTracks]/D");
406 rootTree_->Branch(
"phi",&
phi_,
"phi[nTracks]/D");
407 rootTree_->Branch(
"chi2",&
chi2_,
"chi2[nTracks]/D");
408 rootTree_->Branch(
"chi2ndof",&
chi2ndof_,
"chi2ndof[nTracks]/D");
409 rootTree_->Branch(
"charge",&
charge_,
"charge[nTracks]/I");
410 rootTree_->Branch(
"qoverp",&
qoverp_,
"qoverp[nTracks]/D");
411 rootTree_->Branch(
"dz",&
dz_,
"dz[nTracks]/D");
412 rootTree_->Branch(
"dxy",&
dxy_,
"dxy[nTracks]/D");
413 rootTree_->Branch(
"xPCA",&
xPCA_,
"xPCA[nTracks]/D");
414 rootTree_->Branch(
"yPCA",&
yPCA_,
"yPCA[nTracks]/D");
415 rootTree_->Branch(
"zPCA",&
zPCA_,
"zPCA[nTracks]/D");
416 rootTree_->Branch(
"xUnbiasedVertex",&
xUnbiasedVertex_,
"xUnbiasedVertex[nTracks]/D");
417 rootTree_->Branch(
"yUnbiasedVertex",&
yUnbiasedVertex_,
"yUnbiasedVertex[nTracks]/D");
418 rootTree_->Branch(
"zUnbiasedVertex",&
zUnbiasedVertex_,
"zUnbiasedVertex[nTracks]/D");
420 rootTree_->Branch(
"chi2UnbiasedVertex",&
chi2UnbiasedVertex_,
"chi2UnbiasedVertex[nTracks]/F");
421 rootTree_->Branch(
"DOFUnbiasedVertex",&
DOFUnbiasedVertex_,
" DOFUnbiasedVertex[nTracks]/F");
424 rootTree_->Branch(
"dxyFromMyVertex",&
dxyFromMyVertex_,
"dxyFromMyVertex[nTracks]/D");
425 rootTree_->Branch(
"dzFromMyVertex",&
dzFromMyVertex_,
"dzFromMyVertex[nTracks]/D");
426 rootTree_->Branch(
"dszFromMyVertex",&
dszFromMyVertex_,
"dszFromMyVertex[nTracks]/D");
427 rootTree_->Branch(
"hasRecVertex",&
hasRecVertex_,
"hasRecVertex[nTracks]/I");
428 rootTree_->Branch(
"isGoodTrack",&
isGoodTrack_,
"isGoodTrack[nTracks]/I");
435 std::cout<<
"######################################"<<std::endl;
437 std::cout<<
"######################################"<<std::endl;
virtual char const * what() const
T getParameter(std::string const &) const
virtual int dimension() const =0
static const int nMaxtracks_
int nhits1D_[nMaxtracks_]
#define DEFINE_FWK_MODULE(type)
PrimaryVertexValidation(const edm::ParameterSet &)
float totalChiSquared() const
edm::InputTag TrackCollectionTag_
float DOFUnbiasedVertex_[nMaxtracks_]
virtual void analyze(const edm::Event &, const edm::EventSetup &)
double zPCA_[nMaxtracks_]
uint32_t getLayer(uint32_t pattern) const
double dszFromMyVertex_[nMaxtracks_]
double dxyFromMyVertex_[nMaxtracks_]
bool hasFirstLayerPixelHits(const reco::TrackRef track)
TrackFilterForPVFinding theTrackFilter_
int nhitsTIB_[nMaxtracks_]
double qoverp_[nMaxtracks_]
float normalisedChiSquared() const
int tracksUsedForVertexing_[nMaxtracks_]
int isGoodTrack_[nMaxtracks_]
int nhitsFPIX_[nMaxtracks_]
~PrimaryVertexValidation()
virtual CachingVertex< N > vertex(const std::vector< reco::TransientTrack > &tracks) const =0
float degreesOfFreedom() const
double yUnbiasedVertex_[nMaxtracks_]
bool pixelEndcapHitFilter(uint32_t pattern) const
GlobalPoint position() const
int nhitsTID_[nMaxtracks_]
double zUnbiasedVertex_[nMaxtracks_]
bool pixelBarrelHitFilter(uint32_t pattern) const
float chi2normUnbiasedVertex_[nMaxtracks_]
bool validHitFilter(uint32_t pattern) const
float trackWeight(const reco::TransientTrack &track) const
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
double yPCA_[nMaxtracks_]
int nhits2D_[nMaxtracks_]
bool hasTrackWeight() const
bool isHit2D(const TrackingRecHit &hit) const
int nhitsTOB_[nMaxtracks_]
double chi2ndof_[nMaxtracks_]
XYZPointD XYZPoint
point in space with cartesian internal representation
int nhitsTEC_[nMaxtracks_]
double xPCA_[nMaxtracks_]
double xUnbiasedVertex_[nMaxtracks_]
double dzFromMyVertex_[nMaxtracks_]
DetId geographicalId() const
float sumOfWeightsUnbiasedVertex_[nMaxtracks_]
uint32_t getHitPattern(int position) const
int hasRecVertex_[nMaxtracks_]
float chi2UnbiasedVertex_[nMaxtracks_]
double chi2_[nMaxtracks_]
int nhitsBPIX_[nMaxtracks_]