70 storeNtuple_(iConfig.getParameter<
bool>(
"storeNtuple")),
71 lightNtupleSwitch_(iConfig.getParameter<
bool>(
"isLightNtuple")),
72 useTracksFromRecoVtx_(iConfig.getParameter<
bool>(
"useTracksFromRecoVtx")),
73 vertexZMax_(iConfig.getUntrackedParameter<double>(
"vertexZMax",99.)),
74 intLumi_(iConfig.getUntrackedParameter<double>(
"intLumi",0.)),
75 askFirstLayerHit_(iConfig.getParameter<
bool>(
"askFirstLayerHit")),
76 doBPix_(iConfig.getUntrackedParameter<
bool>(
"doBPix",
true)),
77 doFPix_(iConfig.getUntrackedParameter<
bool>(
"doFPix",
true)),
78 ptOfProbe_(iConfig.getUntrackedParameter<double>(
"probePt",0.)),
79 pOfProbe_(iConfig.getUntrackedParameter<double>(
"probeP",0.)),
80 etaOfProbe_(iConfig.getUntrackedParameter<double>(
"probeEta",2.4)),
81 nHitsOfProbe_(iConfig.getUntrackedParameter<double>(
"probeNHits",0.)),
82 nBins_(iConfig.getUntrackedParameter<
int>(
"numberOfBins",24)),
83 minPt_(iConfig.getUntrackedParameter<double>(
"minPt",1.)),
84 maxPt_(iConfig.getUntrackedParameter<double>(
"maxPt",20.)),
85 debug_(iConfig.getParameter<
bool>(
"Debug")),
86 runControl_(iConfig.getUntrackedParameter<
bool>(
"runControl",
false)),
87 forceBeamSpotContraint_(iConfig.getUntrackedParameter<
bool>(
"forceBeamSpot",
false))
95 std::vector<unsigned int> defaultRuns;
96 defaultRuns.push_back(0);
112 if (clusteringAlgorithm==
"gap"){
114 }
else if(clusteringAlgorithm==
"DA"){
117 }
else if(clusteringAlgorithm==
"DA_vect") {
120 throw VertexException(
"PrimaryVertexProducerAlgorithm: unknown clustering algorithm: " + clusteringAlgorithm);
147 edm::LogVerbatim(
"PrimaryVertexValidation") <<
"######################################";
176 toOutput+=std::to_string(ptbin);
180 edm::LogVerbatim(
"PrimaryVertexValidation") <<
"######################################\n";
181 edm::LogVerbatim(
"PrimaryVertexValidation") <<
"The pT binning is: [" << toOutput <<
"] \n";
205 using namespace reco;
209 edm::LogWarning(
"PrimaryVertexValidation") <<
"*********************************************************************************\n" 210 <<
"* The configuration (ptOfProbe > " <<
ptOfProbe_ <<
"GeV) is not correctly set for current value of magnetic field \n" 211 <<
"* Switching it to 0. !!! \n" 212 <<
"*********************************************************************************"<< std::endl;
220 bool passesRunControl =
false;
228 passesRunControl =
true;
232 if (!passesRunControl)
return;
264 edm::LogInfo(
"tracker geometry read")<<
"There are: "<< pDD->
dets().size() <<
" detectors";
319 double fBfield_=((*theB_).field()->inTesla(
GlobalPoint(0.,0.,0.))).
z();
327 if(!trackCollectionHandle.
isValid())
return;
328 auto const &
tracks = *trackCollectionHandle;
348 LogTrace(
"PrimaryVertexValidation")<<
"caught std::exception "<<er.
what()<<std::endl;
351 std::vector<Vertex> vsorted = *(
vertices);
358 if( vsorted.empty())
return;
363 if ( vsorted[0].isValid() ) {
380 unsigned int vertexCollectionSize = vsorted.size();
383 for (
unsigned int i=0;
i<vertexCollectionSize;
i++) {
384 const Vertex& vertex = vsorted.at(
i);
385 if (vertex.
isValid()) nvvertex++;
396 double chi2prob = 0.;
398 if (!vsorted.at(0).isFake()) {
411 double pt = (**itrk).pt();
416 double dxyRes = (**itrk).dxy(myVertex);
417 double dzRes = (**itrk).dz(myVertex);
419 double dxy_err = (**itrk).dxyError();
420 double dz_err = (**itrk).dzError();
422 float trackphi = ((**itrk).phi())*(180/
M_PI);
423 float tracketa = (**itrk).eta();
433 if(tracketa >= etaF && tracketa < etaL ){
442 if(trackphi >= phiF && trackphi < phiL ){
449 for(
int j=0; j<
nBins_; j++){
454 if(tracketa >= etaJ && tracketa < etaK ){
481 if ( beamSpotHandle.
isValid() ) {
482 beamSpot = *beamSpotHandle;
522 edm::LogInfo(
"PrimaryVertexValidation")<<
" looping over "<<trackCollectionHandle->size()<<
"tracks";
524 h_nTracks->Fill(trackCollectionHandle->size());
530 std::vector<TransientTrack> t_tks;
539 edm::LogInfo(
"PrimaryVertexValidation") <<
"Found: " << t_tks.size() <<
" reconstructed tracks";
555 edm::LogInfo(
"PrimaryVertexValidation")<<
" looping over: "<< clusters.size() <<
" clusters from " << t_tks.size() <<
" selected tracks";
564 for (
const auto & iclus : clusters){
569 for(
const auto & theTTrack : iclus)
578 const Track & theTrack = theTTrack.track();
620 if((*iHit)->isValid()) {
622 if (this->
isHit2D(**iHit)) {++nRecHit2D;}
654 vector<TransientTrack> theFinalTracks;
655 theFinalTracks.clear();
657 for (
const auto & tk : iclus) {
661 if( tk == theTTrack )
continue;
663 theFinalTracks.push_back(tk);
668 if(theFinalTracks.size() > 1){
671 edm::LogInfo(
"PrimaryVertexValidation")<<
"Transient Track Collection size: "<<theFinalTracks.size();
679 theFittedVertex = theFitter->vertex(theFinalTracks,beamSpot);
681 theFittedVertex = theFitter->vertex(theFinalTracks);
686 double totalTrackWeights=0;
687 if(theFittedVertex.isValid ()){
690 if(theFittedVertex.hasTrackWeight()){
691 for(
const auto & theFinalTrack : theFinalTracks){
693 totalTrackWeights+= theFittedVertex.trackWeight(theFinalTrack);
701 const math::XYZPoint myVertex(theFittedVertex.position().x(),theFittedVertex.position().y(),theFittedVertex.position().z());
703 const Vertex vertex = theFittedVertex;
721 h_fitVtxChi2Prob_->Fill(TMath::Prob(theFittedVertex.totalChiSquared(),(
int)theFittedVertex.degreesOfFreedom()));
724 double dxyFromMyVertex = theTrack.
dxy(myVertex);
725 double dzFromMyVertex = theTrack.
dz(myVertex);
727 GlobalPoint vert(theFittedVertex.position().x(),theFittedVertex.position().y(),theFittedVertex.position().z());
733 double dz_err =
sqrt(
std::pow(theTrack.
dzError(), 2) + theFittedVertex.positionError().czz());
743 double s_ip2dpv_corr = s_ip2dpv.second.value();
744 double s_ip2dpv_err = s_ip2dpv.second.error();
753 double s_ip3dpv_corr = s_ip3dpv.second.value();
754 double s_ip3dpv_err = s_ip3dpv.second.error();
758 double ip3d_corr = ip3dpv.second.value();
759 double ip3d_err = ip3dpv.second.error();
767 float my_dx = refPoint.
x() - myVertex.x();
768 float my_dy = refPoint.
y() - myVertex.y();
770 float my_dx2 = cPToVtx.
x() - myVertex.x();
771 float my_dy2 = cPToVtx.
y() - myVertex.y();
773 float my_dxy =
std::sqrt(my_dx*my_dx + my_dy*my_dy);
781 edm::LogInfo(
"PrimaryVertexValidation")<<
"my_dx:" << my_dx
782 <<
" my_dy:" << my_dy
783 <<
" my_dxy:" << my_dxy
784 <<
" my_dx2:" << my_dx2
785 <<
" my_dy2:" << my_dy2
787 <<
" dxyFromVtx:" << dxyFromMyVertex <<
"\n" 788 <<
" ============================== "<<
"\n" 791 <<
"diff3:" << (my_dx - my_dx2) <<
" " << (my_dy - my_dy2) <<
"\n" 811 float trackphi = (theTrack.
phi())*(180./
M_PI);
812 float tracketa = theTrack.
eta();
813 float trackpt = theTrack.
pt();
814 float trackp = theTrack.
p();
819 int ladder_num = -1.;
820 int module_num = -1.;
821 int L1BPixHitCount = 0;
824 const DetId& detId = (*iHit)->geographicalId();
825 unsigned int subid = detId.
subdetId();
843 for(
int ipTBin=0; ipTBin<
nPtBins_; ipTBin++){
851 if(
std::abs(tracketa)<1.5 && (trackpt >= pTF && trackpt < pTL) ){
881 if(pixelOcc.first ==
true)
882 edm::LogInfo(
"PrimaryVertexValidation")<<
"has BPIx hits"<<std::endl;
883 if(pixelOcc.second ==
true)
884 edm::LogInfo(
"PrimaryVertexValidation")<<
"has FPix hits"<<std::endl;
887 if(!
doBPix_ && (pixelOcc.first ==
true))
continue;
888 if(!
doFPix_ && (pixelOcc.second ==
true))
continue;
915 float dxyRecoV = theTrack.
dz(theRecoVertex);
916 float dzRecoV = theTrack.
dxy(theRecoVertex);
920 double zTrack=(theTTrack.stateAtBeamLine().trackStateAtPCA()).
position().z();
921 double zVertex=theFittedVertex.position().z();
922 double tantheta=
tan((theTTrack.stateAtBeamLine().trackStateAtPCA()).momentum().theta());
925 double restrkz = zTrack-
zVertex;
926 double pulltrkz = (zTrack-
zVertex)/TMath::Sqrt(dz2);
951 n_dxyVsPhi->Fill(trackphi,dxyFromMyVertex/s_ip2dpv_err);
954 a_dxyVsEta->Fill(tracketa,dxyFromMyVertex*cmToum);
956 n_dxyVsEta->Fill(tracketa,dxyFromMyVertex/s_ip2dpv_err);
959 if( ladder_num > 0 && module_num > 0 ) {
961 LogDebug(
"PrimaryVertexValidation")<<
" ladder_num"<<ladder_num <<
" module_num"<<module_num <<std::endl;
972 if(L1BPixHitCount==1){
985 for(
int i=0; i<
nBins_; i++){
993 if(tracketa >= etaF && tracketa < etaL ){
1012 if(trackphi >= phiF && trackphi < phiL ){
1029 for(
int j=0; j<
nBins_; j++){
1034 if(tracketa >= etaJ && tracketa < etaK ){
1049 edm::LogInfo(
"PrimaryVertexValidation")<<
" myVertex.x()= "<<myVertex.x()<<
"\n" 1050 <<
" myVertex.y()= "<<myVertex.y()<<
" \n" 1051 <<
" myVertex.z()= "<<myVertex.z()<<
" \n" 1052 <<
" theTrack.dz(myVertex)= "<<theTrack.
dz(myVertex)<<
" \n" 1053 <<
" zPCA -myVertex.z() = "<<(theTrack.
vertex().z() -myVertex.z());
1061 LogTrace(
"PrimaryVertexValidation")<<
"caught std::exception "<<er.
what()<<std::endl;
1068 edm::LogInfo(
"PrimaryVertexValidation")<<
"Not enough tracks to make a vertex. Returns no vertex info";
1075 edm::LogInfo(
"PrimaryVertexValidation")<<
"Track "<<i<<
" : pT = "<<theTrack.
pt();
1100 if (dynamic_cast<const SiStripRecHit2D*>(&hit))
return false;
1101 else if (dynamic_cast<const SiStripMatchedRecHit2D*>(&hit))
return true;
1102 else if (dynamic_cast<const ProjectedSiStripRecHit2D*>(&hit))
return false;
1104 edm::LogError(
"UnkownType") <<
"@SUB=AlignmentTrackSelector::isHit2D" 1105 <<
"Tracker hit not in pixel and neither SiStripRecHit2D nor " 1106 <<
"SiStripMatchedRecHit2D nor ProjectedSiStripRecHit2D.";
1111 edm::LogWarning(
"DetectorMismatch") <<
"@SUB=AlignmentTrackSelector::isHit2D" 1112 <<
"Hit not in tracker with 'official' dimension >=2.";
1123 bool hasBPixHits =
false;
1124 bool hasFPixHits =
false;
1134 return std::make_pair(hasBPixHits,hasFPixHits);
1141 using namespace reco;
1160 <<
"######################################\n" 1162 <<
"######################################";
1254 TH1F::SetDefaultSumw2(kTRUE);
1256 h_lumiFromConfig = EventFeatures.
make<TH1F>(
"h_lumiFromConfig",
"luminosity from config;;luminosity of present run",1,-0.5,0.5);
1259 h_runFromConfig = EventFeatures.
make<TH1I>(
"h_runFromConfig",
"run number from config;;run number (from configuration)",
1265 h_runFromEvent = EventFeatures.
make<TH1I>(
"h_runFromEvent",
"run number from config;;run number (from event)",1,-0.5,0.5);
1266 h_nTracks = EventFeatures.
make<TH1F>(
"h_nTracks",
"number of tracks per event;n_{tracks}/event;n_{events}",300,-0.5,299.5);
1267 h_nClus = EventFeatures.
make<TH1F>(
"h_nClus",
"number of track clusters;n_{clusters}/event;n_{events}",50,-0.5,49.5);
1268 h_nOfflineVertices = EventFeatures.
make<TH1F>(
"h_nOfflineVertices",
"number of offline reconstructed vertices;n_{vertices}/event;n_{events}",50,-0.5,49.5);
1269 h_runNumber = EventFeatures.
make<TH1F>(
"h_runNumber",
"run number;run number;n_{events}",100000,250000.,350000.);
1270 h_xOfflineVertex = EventFeatures.
make<TH1F>(
"h_xOfflineVertex",
"x-coordinate of offline vertex;x_{vertex};n_{events}",100,-0.1,0.1);
1271 h_yOfflineVertex = EventFeatures.
make<TH1F>(
"h_yOfflineVertex",
"y-coordinate of offline vertex;y_{vertex};n_{events}",100,-0.1,0.1);
1272 h_zOfflineVertex = EventFeatures.
make<TH1F>(
"h_zOfflineVertex",
"z-coordinate of offline vertex;z_{vertex};n_{events}",100,-30.,30.);
1273 h_xErrOfflineVertex = EventFeatures.
make<TH1F>(
"h_xErrOfflineVertex",
"x-coordinate error of offline vertex;err_{x}^{vtx};n_{events}",100,0.,0.01);
1274 h_yErrOfflineVertex = EventFeatures.
make<TH1F>(
"h_yErrOfflineVertex",
"y-coordinate error of offline vertex;err_{y}^{vtx};n_{events}",100,0.,0.01);
1275 h_zErrOfflineVertex = EventFeatures.
make<TH1F>(
"h_zErrOfflineVertex",
"z-coordinate error of offline vertex;err_{z}^{vtx};n_{events}",100,0.,10.);
1276 h_BSx0 = EventFeatures.
make<TH1F>(
"h_BSx0",
"x-coordinate of reco beamspot;x^{BS}_{0};n_{events}",100,-0.1,0.1);
1277 h_BSy0 = EventFeatures.
make<TH1F>(
"h_BSy0",
"y-coordinate of reco beamspot;y^{BS}_{0};n_{events}",100,-0.1,0.1);
1278 h_BSz0 = EventFeatures.
make<TH1F>(
"h_BSz0",
"z-coordinate of reco beamspot;z^{BS}_{0};n_{events}",100,-1.,1.);
1279 h_Beamsigmaz = EventFeatures.
make<TH1F>(
"h_Beamsigmaz",
"z-coordinate beam width;#sigma_{Z}^{beam};n_{events}",100,0.,1.);
1280 h_BeamWidthX = EventFeatures.
make<TH1F>(
"h_BeamWidthX",
"x-coordinate beam width;#sigma_{X}^{beam};n_{events}",100,0.,0.01);
1281 h_BeamWidthY = EventFeatures.
make<TH1F>(
"h_BeamWidthY",
"y-coordinate beam width;#sigma_{Y}^{beam};n_{events}",100,0.,0.01);
1283 h_etaMax = EventFeatures.
make<TH1F>(
"etaMax",
"etaMax",1,-0.5,0.5);
1284 h_pTinfo = EventFeatures.
make<TH1F>(
"pTinfo",
"pTinfo",3,-1.5,1.5);
1285 h_pTinfo->GetXaxis()->SetBinLabel(1,
"n. bins");
1286 h_pTinfo->GetXaxis()->SetBinLabel(2,
"pT min");
1287 h_pTinfo->GetXaxis()->SetBinLabel(3,
"pT max");
1289 h_nbins = EventFeatures.
make<TH1F>(
"nbins",
"nbins",1,-0.5,0.5);
1290 h_nLadders = EventFeatures.
make<TH1F>(
"nladders",
"n. ladders",1,-0.5,0.5);
1295 h_probePt_ = ProbeFeatures.
make<TH1F>(
"h_probePt",
"p_{T} of probe track;track p_{T} (GeV); tracks",100,0.,50.);
1297 h_probeP_ = ProbeFeatures.
make<TH1F>(
"h_probeP",
"momentum of probe track;track p (GeV); tracks",100,0.,100.);
1298 h_probeEta_ = ProbeFeatures.
make<TH1F>(
"h_probeEta",
"#eta of the probe track;track #eta;tracks",54,-2.8,2.8);
1299 h_probePhi_ = ProbeFeatures.
make<TH1F>(
"h_probePhi",
"#phi of probe track;track #phi (rad);tracks",100,-3.15,3.15);
1301 h2_probeEtaPhi_ = ProbeFeatures.
make<TH2F>(
"h2_probeEtaPhi",
"probe track #phi vs #eta;#eta of probe track;track #phi of probe track (rad); tracks",54,-2.8,2.8,100,-3.15,3.15);
1302 h2_probeEtaPt_ = ProbeFeatures.
make<TH2F>(
"h2_probeEtaPt",
"probe track p_{T} vs #eta;#eta of probe track;track p_{T} (GeV); tracks",54,-2.8,2.8,100,0.,50.);
1304 h_probeChi2_ = ProbeFeatures.
make<TH1F>(
"h_probeChi2",
"#chi^{2} of probe track;track #chi^{2}; tracks",100,0.,100.);
1305 h_probeNormChi2_ = ProbeFeatures.
make<TH1F>(
"h_probeNormChi2",
" normalized #chi^{2} of probe track;track #chi^{2}/ndof; tracks",100,0.,10.);
1306 h_probeCharge_ = ProbeFeatures.
make<TH1F>(
"h_probeCharge",
"charge of profe track;track charge Q;tracks",3,-1.5,1.5);
1307 h_probeQoverP_ = ProbeFeatures.
make<TH1F>(
"h_probeQoverP",
"q/p of probe track; track Q/p (GeV^{-1});tracks",200,-1.,1.);
1308 h_probedzRecoV_ = ProbeFeatures.
make<TH1F>(
"h_probedzRecoV",
"d_{z}(V_{offline}) of probe track;track d_{z}(V_{off}) (cm);tracks",200,-1.,1.);
1309 h_probedxyRecoV_ = ProbeFeatures.
make<TH1F>(
"h_probedxyRecoV",
"d_{xy}(V_{offline}) of probe track;track d_{xy}(V_{off}) (cm);tracks",200,-1.,1.);
1310 h_probedzRefitV_ = ProbeFeatures.
make<TH1F>(
"h_probedzRefitV",
"d_{z}(V_{refit}) of probe track;track d_{z}(V_{fit}) (cm);tracks",200,-0.5,0.5);
1311 h_probesignIP2DRefitV_ = ProbeFeatures.
make<TH1F>(
"h_probesignIPRefitV",
"ip_{2D}(V_{refit}) of probe track;track ip_{2D}(V_{fit}) (cm);tracks",200,-1.,1.);
1312 h_probedxyRefitV_ = ProbeFeatures.
make<TH1F>(
"h_probedxyRefitV",
"d_{xy}(V_{refit}) of probe track;track d_{xy}(V_{fit}) (cm);tracks",200,-0.5,0.5);
1314 h_probez0RefitV_ = ProbeFeatures.
make<TH1F>(
"h_probez0RefitV",
"z_{0}(V_{refit}) of probe track;track z_{0}(V_{fit}) (cm);tracks",200,-1.,1.);
1315 h_probed0RefitV_ = ProbeFeatures.
make<TH1F>(
"h_probed0RefitV",
"d_{0}(V_{refit}) of probe track;track d_{0}(V_{fit}) (cm);tracks",200,-1.,1.);
1317 h_probed3DRefitV_ = ProbeFeatures.
make<TH1F>(
"h_probed3DRefitV",
"d_{3D}(V_{refit}) of probe track;track d_{3D}(V_{fit}) (cm);tracks",200,0.,1.);
1318 h_probereszRefitV_ = ProbeFeatures.
make<TH1F>(
"h_probeReszRefitV",
"z_{track} -z_{V_{refit}};track res_{z}(V_{refit}) (cm);tracks",200,-1.,1.);
1320 h_probeRecoVSigZ_ = ProbeFeatures.
make<TH1F>(
"h_probeRecoVSigZ" ,
"Longitudinal DCA Significance (reco);d_{z}(V_{off})/#sigma_{dz};tracks",100,-8,8);
1321 h_probeRecoVSigXY_ = ProbeFeatures.
make<TH1F>(
"h_probeRecoVSigXY" ,
"Transverse DCA Significance (reco);d_{xy}(V_{off})/#sigma_{dxy};tracks",100,-8,8);
1322 h_probeRefitVSigZ_ = ProbeFeatures.
make<TH1F>(
"h_probeRefitVSigZ" ,
"Longitudinal DCA Significance (refit);d_{z}(V_{fit})/#sigma_{dz};tracks",100,-8,8);
1323 h_probeRefitVSigXY_= ProbeFeatures.
make<TH1F>(
"h_probeRefitVSigXY",
"Transverse DCA Significance (refit);d_{xy}(V_{fit})/#sigma_{dxy};tracks",100,-8,8);
1324 h_probeRefitVSig3D_= ProbeFeatures.
make<TH1F>(
"h_probeRefitVSig3D",
"3D DCA Significance (refit);d_{3D}/#sigma_{3D};tracks",100,0.,20.);
1325 h_probeRefitVLogSig3D_ = ProbeFeatures.
make<TH1F>(
"h_probeRefitVLogSig3D",
"log_{10}(3D DCA-Significance) (refit);log_{10}(d_{3D}/#sigma_{3D});tracks",100,-5.,4.);
1326 h_probeRefitVSigResZ_ = ProbeFeatures.
make<TH1F>(
"h_probeRefitVSigResZ" ,
"Longitudinal residual significance (refit);(z_{track} -z_{V_{fit}})/#sigma_{res_{z}};tracks",100,-8,8);
1328 h_probeHits_ = ProbeFeatures.
make<TH1F>(
"h_probeNRechits" ,
"N_{hits} ;N_{hits} ;tracks",40,-0.5,39.5);
1329 h_probeHits1D_ = ProbeFeatures.
make<TH1F>(
"h_probeNRechits1D" ,
"N_{hits} 1D ;N_{hits} 1D ;tracks",40,-0.5,39.5);
1330 h_probeHits2D_ = ProbeFeatures.
make<TH1F>(
"h_probeNRechits2D" ,
"N_{hits} 2D ;N_{hits} 2D ;tracks",40,-0.5,39.5);
1331 h_probeHitsInTIB_ = ProbeFeatures.
make<TH1F>(
"h_probeNRechitsTIB" ,
"N_{hits} TIB ;N_{hits} TIB;tracks",40,-0.5,39.5);
1332 h_probeHitsInTOB_ = ProbeFeatures.
make<TH1F>(
"h_probeNRechitsTOB" ,
"N_{hits} TOB ;N_{hits} TOB;tracks",40,-0.5,39.5);
1333 h_probeHitsInTID_ = ProbeFeatures.
make<TH1F>(
"h_probeNRechitsTID" ,
"N_{hits} TID ;N_{hits} TID;tracks",40,-0.5,39.5);
1334 h_probeHitsInTEC_ = ProbeFeatures.
make<TH1F>(
"h_probeNRechitsTEC" ,
"N_{hits} TEC ;N_{hits} TEC;tracks",40,-0.5,39.5);
1335 h_probeHitsInBPIX_ = ProbeFeatures.
make<TH1F>(
"h_probeNRechitsBPIX",
"N_{hits} BPIX;N_{hits} BPIX;tracks",40,-0.5,39.5);
1336 h_probeHitsInFPIX_ = ProbeFeatures.
make<TH1F>(
"h_probeNRechitsFPIX",
"N_{hits} FPIX;N_{hits} FPIX;tracks",40,-0.5,39.5);
1338 h_probeL1Ladder_ = ProbeFeatures.
make<TH1F>(
"h_probeL1Ladder",
"Ladder number (L1 hit); ladder number",22,-1.5,20.5);
1339 h_probeL1Module_ = ProbeFeatures.
make<TH1F>(
"h_probeL1Module",
"Module number (L1 hit); module number",10,-1.5,8.5);
1344 h_fitVtxNtracks_ = RefitVertexFeatures.make<TH1F>(
"h_fitVtxNtracks" ,
"N_{trks} used in vertex fit;N^{fit}_{tracks};vertices" ,100,-0.5,99.5);
1345 h_fitVtxNdof_ = RefitVertexFeatures.make<TH1F>(
"h_fitVtxNdof" ,
"N_{DOF} of vertex fit;N_{DOF} of refit vertex;vertices" ,100,-0.5,99.5);
1346 h_fitVtxChi2_ = RefitVertexFeatures.make<TH1F>(
"h_fitVtxChi2" ,
"#chi^{2} of vertex fit;vertex #chi^{2};vertices" ,100,-0.5,99.5);
1347 h_fitVtxChi2ndf_ = RefitVertexFeatures.make<TH1F>(
"h_fitVtxChi2ndf" ,
"#chi^{2}/ndf of vertex fit;vertex #chi^{2}/ndf;vertices" ,100,-0.5,9.5);
1348 h_fitVtxChi2Prob_ = RefitVertexFeatures.make<TH1F>(
"h_fitVtxChi2Prob" ,
"Prob(#chi^{2},ndf) of vertex fit;Prob(#chi^{2},ndf);vertices",40,0.,1.);
1349 h_fitVtxTrackWeights_ = RefitVertexFeatures.make<TH1F>(
"h_fitVtxTrackWeights",
"track weights associated to track;track weights;tracks",40,0.,1.);
1350 h_fitVtxTrackAverageWeight_ = RefitVertexFeatures.make<TH1F>(
"h_fitVtxTrackAverageWeight_",
"average track weight per vertex;#LT track weight #GT;vertices",40,0.,1.);
1355 h_recoVtxNtracks_ = RecoVertexFeatures.
make<TH1F>(
"h_recoVtxNtracks" ,
"N^{vtx}_{trks};N^{vtx}_{trks};vertices" ,100,-0.5,99.5);
1356 h_recoVtxChi2ndf_ = RecoVertexFeatures.
make<TH1F>(
"h_recoVtxChi2ndf" ,
"#chi^{2}/ndf vtx;#chi^{2}/ndf vtx;vertices" ,10,-0.5,9.5);
1357 h_recoVtxChi2Prob_ = RecoVertexFeatures.
make<TH1F>(
"h_recoVtxChi2Prob" ,
"Prob(#chi^{2},ndf);Prob(#chi^{2},ndf);vertices",40,0.,1.);
1358 h_recoVtxSumPt_ = RecoVertexFeatures.
make<TH1F>(
"h_recoVtxSumPt" ,
"Sum(p^{trks}_{T});Sum(p^{trks}_{T});vertices" ,100,0.,200.);
1528 for (
int j=0; j<
nBins_; ++j ) {
1534 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{xy};tracks",etaF,etaL,phiF,phiL),
1538 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{z};tracks",etaF,etaL,phiF,phiL),
1542 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{3D};tracks",etaF,etaL,phiF,phiL),
1546 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{xy}/#sigma_{d_{xy}};tracks",etaF,etaL,phiF,phiL),
1550 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{z}/#sigma_{d_{z}};tracks",etaF,etaL,phiF,phiL),
1554 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{3D}/#sigma_{d_{3D}};tracks",etaF,etaL,phiF,phiL),
1564 a_dxyVsPhi = BiasVsParameter.make<TH2F>(
"h2_dxy_vs_phi",
"d_{xy} vs track #phi;track #phi [rad];track d_{xy}(PV) [#mum]",
1567 a_dzVsPhi = BiasVsParameter.make<TH2F>(
"h2_dz_vs_phi",
"d_{z} vs track #phi;track #phi [rad];track d_{z}(PV) [#mum]",
1570 n_dxyVsPhi = BiasVsParameter.make<TH2F>(
"h2_n_dxy_vs_phi",
"d_{xy}/#sigma_{d_{xy}} vs track #phi;track #phi [rad];track d_{xy}(PV)/#sigma_{d_{xy}}",
1573 n_dzVsPhi = BiasVsParameter.make<TH2F>(
"h2_n_dz_vs_phi",
"d_{z}/#sigma_{d_{z}} vs track #phi;track #phi [rad];track d_{z}(PV)/#sigma_{d_{z}}",
1576 a_dxyVsEta = BiasVsParameter.make<TH2F>(
"h2_dxy_vs_eta",
"d_{xy} vs track #eta;track #eta;track d_{xy}(PV) [#mum]",
1579 a_dzVsEta = BiasVsParameter.make<TH2F>(
"h2_dz_vs_eta",
"d_{z} vs track #eta;track #eta;track d_{z}(PV) [#mum]",
1582 n_dxyVsEta = BiasVsParameter.make<TH2F>(
"h2_n_dxy_vs_eta",
"d_{xy}/#sigma_{d_{xy}} vs track #eta;track #eta;track d_{xy}(PV)/#sigma_{d_{xy}}",
1585 n_dzVsEta = BiasVsParameter.make<TH2F>(
"h2_n_dz_vs_eta",
"d_{z}/#sigma_{d_{z}} vs track #eta;track #eta;track d_{z}(PV)/#sigma_{d_{z}}",
1596 double highedge=nBins_-0.5;
1597 double lowedge=-0.5;
1602 "#LT d_{xy} #GT vs #phi sector;#varphi (sector) [degrees];#LT d_{xy} #GT [#mum]",
1603 nBins_,lowedge,highedge);
1606 "#sigma_{d_{xy}} vs #phi sector;#varphi (sector) [degrees];#sigma_{d_{xy}} [#mum]",
1607 nBins_,lowedge,highedge);
1610 "#LT d_{z} #GT vs #phi sector;#varphi (sector) [degrees];#LT d_{z} #GT [#mum]",
1611 nBins_,lowedge,highedge);
1614 nBins_,lowedge,highedge);
1617 "#LT d_{xy} #GT vs #eta sector;#eta (sector);#LT d_{xy} #GT [#mum]",
1618 nBins_,lowedge,highedge);
1621 "#sigma_{d_{xy}} vs #eta sector;#eta (sector);#sigma_{d_{xy}} [#mum]",
1622 nBins_,lowedge,highedge);
1625 "#LT d_{z} #GT vs #eta sector;#eta (sector);#LT d_{z} #GT [#mum]" 1626 ,
nBins_,lowedge,highedge);
1629 "#sigma_{d_{xy}} vs #eta sector;#eta (sector);#sigma_{d_{z}} [#mum]",
1630 nBins_,lowedge,highedge);
1633 "#LT d_{xy}/#sigma_{d_{xy}} #GT vs #phi sector;#varphi (sector) [degrees];#LT d_{xy}/#sigma_{d_{xy}} #GT",
1634 nBins_,lowedge,highedge);
1637 "width(d_{xy}/#sigma_{d_{xy}}) vs #phi sector;#varphi (sector) [degrees]; width(d_{xy}/#sigma_{d_{xy}})",
1638 nBins_,lowedge,highedge);
1641 "#LT d_{z}/#sigma_{d_{z}} #GT vs #phi sector;#varphi (sector) [degrees];#LT d_{z}/#sigma_{d_{z}} #GT",
1642 nBins_,lowedge,highedge);
1645 "width(d_{z}/#sigma_{d_{z}}) vs #phi sector;#varphi (sector) [degrees];width(d_{z}/#sigma_{d_{z}})",
1646 nBins_,lowedge,highedge);
1649 "#LT d_{xy}/#sigma_{d_{xy}} #GT vs #eta sector;#eta (sector);#LT d_{xy}/#sigma_{d_{z}} #GT",
1650 nBins_,lowedge,highedge);
1653 "width(d_{xy}/#sigma_{d_{xy}}) vs #eta sector;#eta (sector);width(d_{xy}/#sigma_{d_{z}})",
1654 nBins_,lowedge,highedge);
1657 "#LT d_{z}/#sigma_{d_{z}} #GT vs #eta sector;#eta (sector);#LT d_{z}/#sigma_{d_{z}} #GT",
1658 nBins_,lowedge,highedge);
1661 "width(d_{z}/#sigma_{d_{z}}) vs #eta sector;#eta (sector);width(d_{z}/#sigma_{d_{z}})",
1662 nBins_,lowedge,highedge);
1667 "#LT d_{xy} #GT vs pT;p_{T} [GeV];#LT d_{xy} #GT [#mum]",
1671 "#sigma_{d_{xy}} vs pT;p_{T} [GeV];#sigma_{d_{xy}} [#mum]",
1675 "#LT d_{z} #GT vs pT;p_{T} [GeV];#LT d_{z} #GT [#mum]",
1683 "#LT d_{xy}/#sigma_{d_{xy}} #GT vs pT;p_{T} [GeV];#LT d_{xy}/#sigma_{d_{xy}} #GT",
1687 "width(d_{xy}/#sigma_{d_{xy}}) vs pT;p_{T} [GeV]; width(d_{xy}/#sigma_{d_{xy}})",
1691 "#LT d_{z}/#sigma_{d_{z}} #GT vs pT;p_{T} [GeV];#LT d_{z}/#sigma_{d_{z}} #GT",
1695 "width(d_{z}/#sigma_{d_{z}}) vs pT;p_{T} [GeV];width(d_{z}/#sigma_{d_{z}})",
1700 "#LT d_{xy} #GT vs p_{T};p_{T}(|#eta|<1.) [GeV];#LT d_{xy} #GT [#mum]",
1704 "#sigma_{d_{xy}} vs p_{T};p_{T}(|#eta|<1.) [GeV];#sigma_{d_{xy}} [#mum]",
1708 "#LT d_{z} #GT vs p_{T};p_{T}(|#eta|<1.) [GeV];#LT d_{z} #GT [#mum]" 1712 "#sigma_{d_{z}} vs p_{T};p_{T}(|#eta|<1.) [GeV];#sigma_{d_{z}} [#mum]",
1716 "#LT d_{xy}/#sigma_{d_{xy}} #GT vs p_{T};p_{T}(|#eta|<1.) [GeV];#LT d_{xy}/#sigma_{d_{z}} #GT",
1720 "width(d_{xy}/#sigma_{d_{xy}}) vs p_{T};p_{T}(|#eta|<1.) [GeV];width(d_{xy}/#sigma_{d_{z}})",
1724 "#LT d_{z}/#sigma_{d_{z}} #GT vs p_{T};p_{T}(|#eta|<1.) [GeV];#LT d_{z}/#sigma_{d_{z}} #GT",
1728 "width(d_{z}/#sigma_{d_{z}}) vs p_{T};p_{T}(|#eta|<1.) [GeV];width(d_{z}/#sigma_{d_{z}})",
1734 "#LT d_{xy} #GT map;#eta (sector);#varphi (sector) [degrees]",
1738 "#LT d_{z} #GT map;#eta (sector);#varphi (sector) [degrees]",
1742 "#LT d_{xy}/#sigma_{d_{xy}} #GT map;#eta (sector);#varphi (sector) [degrees]",
1746 "#LT d_{z}/#sigma_{d_{z}} #GT map;#eta (sector);#varphi (sector) [degrees]",
1750 "#sigma_{d_{xy}} map;#eta (sector);#varphi (sector) [degrees]",
1754 "#sigma_{d_{z}} map;#eta (sector);#varphi (sector) [degrees]",
1758 "width(d_{xy}/#sigma_{d_{xy}}) map;#eta (sector);#varphi (sector) [degrees]",
1762 "width(d_{z}/#sigma_{d_{z}}) map;#eta (sector);#varphi (sector) [degrees]",
1768 "Median of d_{xy} vs #phi sector;#varphi (sector) [degrees];#mu_{1/2}(d_{xy}) [#mum]",
1769 nBins_,lowedge,highedge);
1772 "Median absolute deviation of d_{xy} vs #phi sector;#varphi (sector) [degrees];MAD(d_{xy}) [#mum]",
1773 nBins_,lowedge,highedge);
1776 "Median of d_{z} vs #phi sector;#varphi (sector) [degrees];#mu_{1/2}(d_{z}) [#mum]",
1777 nBins_,lowedge,highedge);
1780 "Median absolute deviation of d_{z} vs #phi sector;#varphi (sector) [degrees];MAD(d_{z}) [#mum]",
1781 nBins_,lowedge,highedge);
1784 "Median of d_{xy} vs #eta sector;#eta (sector);#mu_{1/2}(d_{xy}) [#mum]",
1785 nBins_,lowedge,highedge);
1788 "Median absolute deviation of d_{xy} vs #eta sector;#eta (sector);MAD(d_{xy}) [#mum]",
1789 nBins_,lowedge,highedge);
1792 "Median of d_{z} vs #eta sector;#eta (sector);#mu_{1/2}(d_{z}) [#mum]",
1793 nBins_,lowedge,highedge);
1796 "Median absolute deviation of d_{z} vs #eta sector;#eta (sector);MAD(d_{z}) [#mum]",
1797 nBins_,lowedge,highedge);
1800 "Median of d_{xy}/#sigma_{d_{xy}} vs #phi sector;#varphi (sector) [degrees];#mu_{1/2}(d_{xy}/#sigma_{d_{xy}})",
1801 nBins_,lowedge,highedge);
1804 "Median absolute deviation of d_{xy}/#sigma_{d_{xy}} vs #phi sector;#varphi (sector) [degrees]; MAD(d_{xy}/#sigma_{d_{xy}})",
1805 nBins_,lowedge,highedge);
1808 "Median of d_{z}/#sigma_{d_{z}} vs #phi sector;#varphi (sector) [degrees];#mu_{1/2}(d_{z}/#sigma_{d_{z}})",
1809 nBins_,lowedge,highedge);
1812 "Median absolute deviation of d_{z}/#sigma_{d_{z}} vs #phi sector;#varphi (sector) [degrees];MAD(d_{z}/#sigma_{d_{z}})",
1813 nBins_,lowedge,highedge);
1816 "Median of d_{xy}/#sigma_{d_{xy}} vs #eta sector;#eta (sector);#mu_{1/2}(d_{xy}/#sigma_{d_{z}})",
1817 nBins_,lowedge,highedge);
1820 "Median absolute deviation of d_{xy}/#sigma_{d_{xy}} vs #eta sector;#eta (sector);MAD(d_{xy}/#sigma_{d_{z}})",
1821 nBins_,lowedge,highedge);
1824 "Median of d_{z}/#sigma_{d_{z}} vs #eta sector;#eta (sector);#mu_{1/2}(d_{z}/#sigma_{d_{z}})",
1825 nBins_,lowedge,highedge);
1828 "Median absolute deviation of d_{z}/#sigma_{d_{z}} vs #eta sector;#eta (sector);MAD(d_{z}/#sigma_{d_{z}})",
1829 nBins_,lowedge,highedge);
1873 for (
int j=0; j<
nBins_; ++j ) {
1879 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{xy} [#mum];tracks",etaF,etaL,phiF,phiL),
1883 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{z} [#mum];tracks",etaF,etaL,phiF,phiL),
1887 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{xy}/#sigma_{d_{xy}};tracks",etaF,etaL,phiF,phiL),
1891 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{z}/#sigma_{d_{z}};tracks",etaF,etaL,phiF,phiL),
1909 "#LT d_{xy} #GT vs #phi sector;#varphi (sector) [degrees];#LT d_{xy} #GT [#mum]",
1910 nBins_,lowedge,highedge);
1913 "#sigma_{d_{xy}} vs #phi sector;#varphi (sector) [degrees];#sigma_{d_{xy}} [#mum]",
1914 nBins_,lowedge,highedge);
1917 "#LT d_{z} #GT vs #phi sector;#varphi (sector) [degrees];#LT d_{z} #GT [#mum]",
1918 nBins_,lowedge,highedge);
1921 "#sigma_{d_{z}} vs #phi sector;#varphi (sector) [degrees];#sigma_{d_{z}} [#mum]",
1922 nBins_,lowedge,highedge);
1925 "#LT d_{xy} #GT vs #eta sector;#eta (sector);#LT d_{xy} #GT [#mum]",
1926 nBins_,lowedge,highedge);
1929 "#sigma_{d_{xy}} vs #eta sector;#eta (sector);#sigma_{d_{xy}} [#mum]",
1930 nBins_,lowedge,highedge);
1933 "#LT d_{z} #GT vs #eta sector;#eta (sector);#LT d_{z} #GT [#mum]",
1934 nBins_,lowedge,highedge);
1937 "#sigma_{d_{xy}} vs #eta sector;#eta (sector);#sigma_{d_{z}} [#mum]",
1938 nBins_,lowedge,highedge);
1941 "#LT d_{xy}/#sigma_{d_{xy}} #GT vs #phi sector;#varphi (sector) [degrees];#LT d_{xy}/#sigma_{d_{xy}} #GT",
1942 nBins_,lowedge,highedge);
1945 "width(d_{xy}/#sigma_{d_{xy}}) vs #phi sector;#varphi (sector) [degrees]; width(d_{xy}/#sigma_{d_{xy}})",
1946 nBins_,lowedge,highedge);
1949 "#LT d_{z}/#sigma_{d_{z}} #GT vs #phi sector;#varphi (sector) [degrees];#LT d_{z}/#sigma_{d_{z}} #GT",
1950 nBins_,lowedge,highedge);
1953 "width(d_{z}/#sigma_{d_{z}}) vs #phi sector;#varphi (sector) [degrees];width(d_{z}/#sigma_{d_{z}})",
1954 nBins_,lowedge,highedge);
1957 "#LT d_{xy}/#sigma_{d_{xy}} #GT vs #eta sector;#eta (sector);#LT d_{xy}/#sigma_{d_{z}} #GT",
1958 nBins_,lowedge,highedge);
1961 "width(d_{xy}/#sigma_{d_{xy}}) vs #eta sector;#eta (sector);width(d_{xy}/#sigma_{d_{z}})",
1962 nBins_,lowedge,highedge);
1965 "#LT d_{z}/#sigma_{d_{z}} #GT vs #eta sector;#eta (sector);#LT d_{z}/#sigma_{d_{z}} #GT",
1966 nBins_,lowedge,highedge);
1969 "width(d_{z}/#sigma_{d_{z}}) vs #eta sector;#eta (sector);width(d_{z}/#sigma_{d_{z}})",
1970 nBins_,lowedge,highedge);
1975 "#LT d_{xy} #GT map;#eta (sector);#varphi (sector) [degrees]",
1979 "#LT d_{z} #GT map;#eta (sector);#varphi (sector) [degrees]",
1983 "#LT d_{xy}/#sigma_{d_{xy}} #GT map;#eta (sector);#varphi (sector) [degrees]",
1987 "#LT d_{z}/#sigma_{d_{z}} #GT map;#eta (sector);#varphi (sector) [degrees]",
1991 "#sigma_{d_{xy}} map;#eta (sector);#varphi (sector) [degrees]",
1995 "#sigma_{d_{z}} map;#eta (sector);#varphi (sector) [degrees]",
1999 "width(d_{xy}/#sigma_{d_{xy}}) map;#eta (sector);#varphi (sector) [degrees]",
2003 "width(d_{z}/#sigma_{d_{z}}) map;#eta (sector);#varphi (sector) [degrees]",
2009 "Median of d_{xy} vs #phi sector;#varphi (sector) [degrees];#mu_{1/2}(d_{xy}) [#mum]",
2010 nBins_,lowedge,highedge);
2013 "Median absolute deviation of d_{xy} vs #phi sector;#varphi (sector) [degrees];MAD(d_{xy}) [#mum]",
2014 nBins_,lowedge,highedge);
2017 "Median of d_{z} vs #phi sector;#varphi (sector) [degrees];#mu_{1/2}(d_{z}) [#mum]",
2018 nBins_,lowedge,highedge);
2021 "Median absolute deviation of d_{z} vs #phi sector;#varphi (sector) [degrees];MAD(d_{z}) [#mum]",
2022 nBins_,lowedge,highedge);
2025 "Median of d_{xy} vs #eta sector;#eta (sector);#mu_{1/2}(d_{xy}) [#mum]",
2026 nBins_,lowedge,highedge);
2029 "Median absolute deviation of d_{xy} vs #eta sector;#eta (sector);MAD(d_{xy}) [#mum]",
2030 nBins_,lowedge,highedge);
2033 "Median of d_{z} vs #eta sector;#eta (sector);#mu_{1/2}(d_{z}) [#mum]",
2034 nBins_,lowedge,highedge);
2037 "Median absolute deviation of d_{z} vs #eta sector;#eta (sector);MAD(d_{z}) [#mum]",
2038 nBins_,lowedge,highedge);
2041 "Median of d_{xy}/#sigma_{d_{xy}} vs #phi sector;#varphi (sector) [degrees];#mu_{1/2}(d_{xy}/#sigma_{d_{xy}})",
2042 nBins_,lowedge,highedge);
2045 "Median absolute deviation of d_{xy}/#sigma_{d_{xy}} vs #phi sector;#varphi (sector) [degrees]; MAD(d_{xy}/#sigma_{d_{xy}})",
2046 nBins_,lowedge,highedge);
2049 "Median of d_{z}/#sigma_{d_{z}} vs #phi sector;#varphi (sector) [degrees];#mu_{1/2}(d_{z}/#sigma_{d_{z}})",
2050 nBins_,lowedge,highedge);
2053 "Median absolute deviation of d_{z}/#sigma_{d_{z}} vs #phi sector;#varphi (sector) [degrees];MAD(d_{z}/#sigma_{d_{z}})",
2054 nBins_,lowedge,highedge);
2057 "Median of d_{xy}/#sigma_{d_{xy}} vs #eta sector;#eta (sector);#mu_{1/2}(d_{xy}/#sigma_{d_{z}})",
2058 nBins_,lowedge,highedge);
2061 "Median absolute deviation of d_{xy}/#sigma_{d_{xy}} vs #eta sector;#eta (sector);MAD(d_{xy}/#sigma_{d_{z}})",
2062 nBins_,lowedge,highedge);
2065 "Median of d_{z}/#sigma_{d_{z}} vs #eta sector;#eta (sector);#mu_{1/2}(d_{z}/#sigma_{d_{z}})",
2066 nBins_,lowedge,highedge);
2069 "Median absolute deviation of d_{z}/#sigma_{d_{z}} vs #eta sector;#eta (sector);MAD(d_{z}/#sigma_{d_{z}})",
2070 nBins_,lowedge,highedge);
2079 <<
"######################################\n" 2080 <<
"# PrimaryVertexValidation::endJob()\n" 2081 <<
"# Number of analyzed events: "<<
Nevt_<<
"\n" 2082 <<
"######################################";
2087 "#LT d_{xy} #GT vs modZ;module number (Z);#LT d_{xy} #GT [#mum]",
2091 "#sigma_{d_{xy}} vs modZ;module number (Z);#sigma_{d_{xy}} [#mum]",
2095 "#LT d_{z} #GT vs modZ;module number (Z);#LT d_{z} #GT [#mum]",
2099 "#sigma_{d_{z}} vs modZ;module number (Z);#sigma_{d_{z}} [#mum]",
2103 "#LT d_{xy} #GT vs ladder;ladder number (#phi);#LT d_{xy} #GT [#mum]",
2107 "#sigma_{d_{xy}} vs ladder;ladder number (#phi);#sigma_{d_{xy}} [#mum]",
2111 "#LT d_{z} #GT vs ladder;ladder number (#phi);#LT d_{z} #GT [#mum]" 2115 "#sigma_{d_{z}} vs ladder;ladder number (#phi);#sigma_{d_{z}} [#mum]",
2119 "#LT d_{xy}/#sigma_{d_{xy}} #GT vs modZ;module number (Z);#LT d_{xy}/#sigma_{d_{xy}} #GT",
2123 "width(d_{xy}/#sigma_{d_{xy}}) vs modZ;module number (Z); width(d_{xy}/#sigma_{d_{xy}})",
2127 "#LT d_{z}/#sigma_{d_{z}} #GT vs modZ;module number (Z);#LT d_{z}/#sigma_{d_{z}} #GT",
2131 "width(d_{z}/#sigma_{d_{z}}) vs pT;module number (Z);width(d_{z}/#sigma_{d_{z}})",
2135 "#LT d_{xy}/#sigma_{d_{xy}} #GT vs ladder;ladder number (#phi);#LT d_{xy}/#sigma_{d_{z}} #GT",
2139 "width(d_{xy}/#sigma_{d_{xy}}) vs ladder;ladder number (#phi);width(d_{xy}/#sigma_{d_{z}})",
2143 "#LT d_{z}/#sigma_{d_{z}} #GT vs ladder;ladder number (#phi);#LT d_{z}/#sigma_{d_{z}} #GT",
2147 "width(d_{z}/#sigma_{d_{z}}) vs ladder;ladder number (#phi);width(d_{z}/#sigma_{d_{z}})",
2319 bool isOn = (average_current > 2000.);
2322 return ( (isOn && !is0T) || (!isOn && is0T) );
2407 char phibincenter[129];
2409 sprintf(phibincenter,
"%.f",(phiBins[
i]+phiBins[
i+1])/2.);
2411 char etabincenter[129];
2413 sprintf(etabincenter,
"%.1f",(etaBins[
i]+etaBins[
i+1])/2.);
2421 trendPlot->SetBinContent(i+1,mean_);
2422 trendPlot->SetBinError(i+1,meanErr_);
2429 trendPlot->SetBinContent(i+1,width_);
2430 trendPlot->SetBinError(i+1,widthErr_);
2437 trendPlot->SetBinContent(i+1,median_);
2438 trendPlot->SetBinError(i+1,medianErr_);
2445 trendPlot->SetBinContent(i+1,mad_);
2446 trendPlot->SetBinError(i+1,madErr_);
2450 edm::LogWarning(
"PrimaryVertexValidation")<<
"fillTrendPlot() "<<fitPar_<<
" unknown estimator!"<<std::endl;
2454 if(var_.find(
"eta") != std::string::npos){
2455 trendPlot->GetXaxis()->SetBinLabel(
i+1,etabincenter);
2456 }
else if(var_.find(
"phi") != std::string::npos){
2457 trendPlot->GetXaxis()->SetBinLabel(
i+1,phibincenter);
2459 edm::LogWarning(
"PrimaryVertexValidation")<<
"fillTrendPlot() "<<var_<<
" unknown track parameter!"<<std::endl;
2469 for(
auto iterator = h.begin(); iterator != h.end(); iterator++) {
2478 float mean_ = myFit.first.value();
2479 float meanErr_ = myFit.first.error();
2480 trendPlot->SetBinContent(bin,mean_);
2481 trendPlot->SetBinError(bin,meanErr_);
2486 float width_ = myFit.second.value();
2487 float widthErr_ = myFit.second.error();
2488 trendPlot->SetBinContent(bin,width_);
2489 trendPlot->SetBinError(bin,widthErr_);
2496 trendPlot->SetBinContent(bin,median_);
2497 trendPlot->SetBinError(bin,medianErr_);
2504 trendPlot->SetBinContent(bin,mad_);
2505 trendPlot->SetBinError(bin,madErr_);
2509 edm::LogWarning(
"PrimaryVertexValidation")<<
"fillTrendPlotByIndex() "<<fitPar_<<
" unknown estimator!"<<std::endl;
2513 char bincenter[129];
2516 sprintf(bincenter,
"%.1f",(etaBins[bin-1]+etaBins[bin])/2.);
2517 trendPlot->GetXaxis()->SetBinLabel(bin,bincenter);
2520 sprintf(bincenter,
"%.f",(phiBins[bin-1]+phiBins[bin])/2.);
2521 trendPlot->GetXaxis()->SetBinLabel(bin,bincenter);
2537 char phibincenter[129];
2539 sprintf(phibincenter,
"%.f",(phiBins[
i]+phiBins[
i+1])/2.);
2541 trendMap->GetYaxis()->SetBinLabel(
i+1,phibincenter);
2543 for (
int j=0; j<
nBins_; ++j ) {
2545 char etabincenter[129];
2547 sprintf(etabincenter,
"%.1f",(etaBins[j]+etaBins[j+1])/2.);
2549 if(
i==0) { trendMap->GetXaxis()->SetBinLabel(j+1,etabincenter); }
2557 trendMap->SetBinContent(j+1,
i+1,mean_);
2558 trendMap->SetBinError(j+1,
i+1,meanErr_);
2565 trendMap->SetBinContent(j+1,
i+1,width_);
2566 trendMap->SetBinError(j+1,
i+1,widthErr_);
2573 trendMap->SetBinContent(j+1,
i+1,median_);
2574 trendMap->SetBinError(j+1,
i+1,medianErr_);
2581 trendMap->SetBinContent(j+1,
i+1,mad_);
2582 trendMap->SetBinError(j+1,
i+1,madErr_);
2586 edm::LogWarning(
"PrimaryVertexValidation:") <<
" fillMap() "<<fitPar_<<
" unknown estimator!"<<std::endl;
2608 double vzErr =0.0, vxErr=0.0, vyErr=0.0;
2614 double dxy=0.0,
dz=0.0, dxysigma=0.0, dzsigma=0.0;
2615 dxy = track.
dxy(vtxPoint);
2616 dz = track.
dz(vtxPoint);
2621 if(
std::abs(dxy/dxysigma) > dxyErrMax_)
return false;
2622 if(
std::abs(
dz/dzsigma) > dzErrMax_)
return false;
2623 if(track.
ptError() / track.
pt() > ptErrMax_)
return false;
2634 TH1F::SetDefaultSumw2(kTRUE);
2636 std::map<std::string, TH1*>
h;
2640 for(
const auto &
type : types){
2641 h[
"pseudorapidity_"+
type] =dir.
make <TH1F>((
"rapidity_"+
type).c_str(),
"track pseudorapidity; track #eta; tracks",100,-3., 3.);
2642 h[
"z0_"+
type] = dir.
make<TH1F>((
"z0_"+
type).c_str(),
"track z_{0};track z_{0} (cm);tracks",80,-40., 40.);
2643 h[
"phi_"+
type] = dir.
make<TH1F>((
"phi_"+
type).c_str(),
"track #phi; track #phi;tracks",80,-
M_PI,
M_PI);
2644 h[
"eta_"+
type] = dir.
make<TH1F>((
"eta_"+
type).c_str(),
"track #eta; track #eta;tracks",80,-4., 4.);
2645 h[
"pt_"+
type] = dir.
make<TH1F>((
"pt_"+
type).c_str(),
"track p_{T}; track p_{T} [GeV];tracks",100,0., 20.);
2646 h[
"p_"+
type] = dir.
make<TH1F>((
"p_"+
type).c_str(),
"track p; track p [GeV];tracks",100,0., 20.);
2647 h[
"found_"+
type] = dir.
make<TH1F>((
"found_"+
type).c_str(),
"n. found hits;n^{found}_{hits};tracks",30, 0., 30.);
2648 h[
"lost_"+
type] = dir.
make<TH1F>((
"lost_"+
type).c_str(),
"n. lost hits;n^{lost}_{hits};tracks",20, 0., 20.);
2649 h[
"nchi2_"+
type] = dir.
make<TH1F>((
"nchi2_"+
type).c_str(),
"normalized track #chi^{2};track #chi^{2}/ndf;tracks",100, 0., 20.);
2650 h[
"rstart_"+
type] = dir.
make<TH1F>((
"rstart_"+
type).c_str(),
"track start radius; track innermost radius r (cm);tracks",100, 0., 20.);
2651 h[
"expectedInner_"+
type] = dir.
make<TH1F>((
"expectedInner_"+
type).c_str(),
"n. expected inner hits;n^{expected}_{inner};tracks",10, 0., 10.);
2652 h[
"expectedOuter_"+
type] = dir.
make<TH1F>((
"expectedOuter_"+
type).c_str(),
"n. expected outer hits;n^{expected}_{outer};tracks ",10, 0., 10.);
2653 h[
"logtresxy_"+
type] = dir.
make<TH1F>((
"logtresxy_"+
type).c_str(),
"log10(track r-#phi resolution/#mum);log10(track r-#phi resolution/#mum);tracks",100, 0., 5.);
2654 h[
"logtresz_"+
type] = dir.
make<TH1F>((
"logtresz_"+
type).c_str(),
"log10(track z resolution/#mum);log10(track z resolution/#mum);tracks",100, 0., 5.);
2655 h[
"tpullxy_"+
type] = dir.
make<TH1F>((
"tpullxy_"+
type).c_str(),
"track r-#phi pull;pull_{r-#phi};tracks",100, -10., 10.);
2656 h[
"tpullz_"+
type] = dir.
make<TH1F>((
"tpullz_"+
type).c_str(),
"track r-z pull;pull_{r-z};tracks",100, -50., 50.);
2657 h[
"tlogDCAxy_"+
type] = dir.
make<TH1F>((
"tlogDCAxy_"+
type).c_str(),
"track log_{10}(DCA_{r-#phi});track log_{10}(DCA_{r-#phi});tracks",200, -5., 3.);
2658 h[
"tlogDCAz_"+
type] = dir.
make<TH1F>((
"tlogDCAz_"+
type).c_str(),
"track log_{10}(DCA_{r-z});track log_{10}(DCA_{r-z});tracks",200, -5., 5.);
2659 h[
"lvseta_"+
type] = dir.
make<TH2F>((
"lvseta_"+
type).c_str(),
"cluster length vs #eta;track #eta;cluster length",60,-3., 3., 20, 0., 20);
2660 h[
"lvstanlambda_"+
type] = dir.
make<TH2F>((
"lvstanlambda_"+
type).c_str(),
"cluster length vs tan #lambda; tan#lambda;cluster length",60,-6., 6., 20, 0., 20);
2661 h[
"restrkz_"+
type] = dir.
make<TH1F>((
"restrkz_"+
type).c_str(),
"z-residuals (track vs vertex);res_{z} (cm);tracks", 200, -5., 5.);
2662 h[
"restrkzvsphi_"+
type] = dir.
make<TH2F>((
"restrkzvsphi_"+
type).c_str(),
"z-residuals (track - vertex) vs track #phi;track #phi;res_{z} (cm)", 12,-
M_PI,
M_PI,100, -0.5,0.5);
2663 h[
"restrkzvseta_"+
type] = dir.
make<TH2F>((
"restrkzvseta_"+
type).c_str(),
"z-residuals (track - vertex) vs track #eta;track #eta;res_{z} (cm)", 12,-3.,3.,200, -0.5,0.5);
2664 h[
"pulltrkzvsphi_"+
type] = dir.
make<TH2F>((
"pulltrkzvsphi_"+
type).c_str(),
"normalized z-residuals (track - vertex) vs track #phi;track #phi;res_{z}/#sigma_{res_{z}}", 12,-
M_PI,
M_PI,100, -5., 5.);
2665 h[
"pulltrkzvseta_"+
type] = dir.
make<TH2F>((
"pulltrkzvseta_"+
type).c_str(),
"normalized z-residuals (track - vertex) vs track #eta;track #eta;res_{z}/#sigma_{res_{z}}", 12,-3.,3.,100, -5., 5.);
2666 h[
"pulltrkz_"+
type] = dir.
make<TH1F>((
"pulltrkz_"+
type).c_str(),
"normalized z-residuals (track vs vertex);res_{z}/#sigma_{res_{z}};tracks", 100, -5., 5.);
2667 h[
"sigmatrkz0_"+
type] = dir.
make<TH1F>((
"sigmatrkz0_"+
type).c_str(),
"z-resolution (excluding beam);#sigma^{trk}_{z_{0}} (cm);tracks", 100, 0., 5.);
2668 h[
"sigmatrkz_"+
type] = dir.
make<TH1F>((
"sigmatrkz_"+
type).c_str(),
"z-resolution (including beam);#sigma^{trk}_{z} (cm);tracks", 100,0., 5.);
2669 h[
"nbarrelhits_"+
type] = dir.
make<TH1F>((
"nbarrelhits_"+
type).c_str(),
"number of pixel barrel hits;n. hits Barrel Pixel;tracks", 10, 0., 10.);
2670 h[
"nbarrelLayers_"+
type] = dir.
make<TH1F>((
"nbarrelLayers_"+
type).c_str(),
"number of pixel barrel layers;n. layers Barrel Pixel;tracks", 10, 0., 10.);
2671 h[
"nPxLayers_"+
type] = dir.
make<TH1F>((
"nPxLayers_"+
type).c_str(),
"number of pixel layers (barrel+endcap);n. Pixel layers;tracks", 10, 0., 10.);
2672 h[
"nSiLayers_"+
type] = dir.
make<TH1F>((
"nSiLayers_"+
type).c_str(),
"number of Tracker layers;n. Tracker layers;tracks", 20, 0., 20.);
2673 h[
"trackAlgo_"+
type] = dir.
make<TH1F>((
"trackAlgo_"+
type).c_str(),
"track algorithm;track algo;tracks", 30, 0., 30.);
2674 h[
"trackQuality_"+
type] = dir.
make<TH1F>((
"trackQuality_"+
type).c_str(),
"track quality;track quality;tracks", 7, -1., 6.);
2685 unsigned int theNOfBins,
2690 TH1F::SetDefaultSumw2(kTRUE);
2692 auto hash = std::make_pair(resType,varType);
2702 std::vector<TH1F*>
h;
2703 h.reserve(theNOfBins);
2705 if (theNOfBins==0) {
2706 edm::LogError(
"PrimaryVertexValidation") <<
"bookResidualsHistogram() The number of bins cannot be identically 0" << std::endl;
2717 for(
unsigned int i=0;
i<theNOfBins;
i++){
2720 Form(
"%s vs %s - bin %i (%f < %s < %f);%s %s;tracks",t_resType.c_str(),t_varType.c_str(),
i,
theDetails_.
trendbins[varType][
i],t_varType.c_str(),
theDetails_.
trendbins[varType][
i+1],t_resType.c_str(),units.c_str()) : Form(
"%s vs %s - bin %i;%s %s;tracks",t_resType.c_str(),t_varType.c_str(),
i,t_resType.c_str(),units.c_str());
2722 TH1F* htemp = dir.
make<TH1F>(Form(
"histo_%s_%s_plot%i",s_resType.c_str(),s_varType.c_str(),
i),
2738 using namespace reco;
2796 double q=
sqrt(1.-2.*kappa*D0);
2821 int longesthit=0, nbarrel=0;
2823 if ((**hit).isValid() && (**hit).geographicalId().det() ==
DetId::Tracker ){
2831 if (clust->sizeY()-longesthit>0) longesthit=clust->sizeY();
2832 if (clust->sizeY()>20.){
std::vector< TH1F * > h_norm_dxy_modZ_
TrajectoryStateClosestToPoint trajectoryStateClosestToPoint(const AlgebraicVector3 &momentum, const GlobalPoint &referencePoint, const TrackCharge &charge, const AlgebraicSymMatrix66 &theCovarianceMatrix, const MagneticField *field)
TH1F * n_dxyPhiMedianTrend
double qoverp() const
q / p
static const std::string kSharedResource
TH1F * n_dzEtaMedianTrend
double p() const
momentum vector magnitude
T getParameter(std::string const &) const
EventNumber_t event() const
TH1F * n_dxyEtaMADBiasTrend
double z0() const
z coordinate
T getUntrackedParameter(std::string const &, T const &) const
TH1F * a_dxyPhiMedianBiasTrend
TH1F * n_dxyPhiMADBiasTrend
TH1F * a_dxyladderWidthTrend
std::vector< TH1F * > n_IP3DPhiResiduals
Measurement1D getMedian(TH1F *histo)
std::vector< TH1F * > a_dxyEtaResiduals
TH1F * n_dzResidualsMap[nMaxBins_][nMaxBins_]
static uint32_t getLayer(uint16_t pattern)
std::vector< TH1F * > a_d3DEtaResiduals
double d0Error() const
error on d0
TH1F * a_dzPhiMedianBiasTrend
GlobalPoint position() const
TH1F * a_dxyladderMeanTrend
TH1F * a_dxyEtaWidthBiasTrend
double longitudinalImpactParameterError() const
std::vector< TH1F * > n_reszPhiResiduals
TFileDirectory MADTrendsDir
std::vector< unsigned int > runControlNumbers_
EventAuxiliary const & eventAuxiliary() const override
bool isNonnull() const
Checks for non-null.
void fillByIndex(std::vector< TH1F * > &h, unsigned int index, double x, std::string tag="")
unsigned short lost() const
Number of lost (=invalid) hits on track.
TH1F * n_dxyEtaMedianTrend
TH1F * n_dxyEtaMeanBiasTrend
TH1F * a_dzEtaWidthBiasTrend
TH1F * a_dzPhiMADBiasTrend
TH1F * h_probeRefitVSigXY_
static const int nMaxtracks_
TH1F * h_probeRefitVSigZ_
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
static bool vtxSort(const reco::Vertex &a, const reco::Vertex &b)
TH1F * n_dxyEtaMedianBiasTrend
const PerigeeTrajectoryError & perigeeError() const
TFileDirectory WidthTrendsDir
TH1F * a_dxyEtaMADBiasTrend
std::pair< Measurement1D, Measurement1D > fitResiduals(TH1 *hist)
TH1F * h_probesignIP2DRefitV_
trackRef_iterator tracks_end() const
last iterator over tracks
TH1F * a_dzpTCentralWidthTrend
void setBeamSpot(const reco::BeamSpot &beamSpot)
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
void fillTrendPlot(TH1F *trendPlot, TH1F *residualsPlot[100], PVValHelper::estimator fitPar_, const std::string &var_)
int nhits1D_[nMaxtracks_]
bool getByToken(EDGetToken token, Handle< PROD > &result) const
std::vector< TH1F * > h_dxy_pT_
double zError() const
error on z
TrackFilterForPVFindingBase * theTrackFilter_
TH1F * a_dxyResidualsMap[nMaxBins_][nMaxBins_]
std::map< std::string, TH1 * > hDA
TrackQuality
track quality
std::vector< TH1F * > a_IP3DEtaResiduals
const FreeTrajectoryState & theState() const
double theta() const
polar angle
#define DEFINE_FWK_MODULE(type)
std::vector< float > generateBins(int n, float start, float range)
std::vector< TH1F * > n_dzPhiResiduals
bool isValid() const
Tells whether the vertex is valid.
std::vector< TH1F * > a_d3DPhiResiduals
std::vector< TH1F * > n_d3DPhiResiduals
PrimaryVertexValidation(const edm::ParameterSet &)
std::vector< TH1F * > n_dxyPhiBiasResiduals
Sin< T >::type sin(const T &t)
TH1F * a_dzEtaMADBiasTrend
TH1F * n_dxyBiasResidualsMap[nMaxBins_][nMaxBins_]
TFileDirectory MeanTrendsDir
std::vector< TH1F * > n_d3DEtaResiduals
const HitPattern & hitPattern() const
unsigned int pxbLadder(const DetId &id) const
Global3DPoint GlobalPoint
reco::TransientTrack build(const reco::Track *p) const
std::vector< TH1F * > h_norm_dz_Central_pT_
TH1F * h_xErrOfflineVertex
double phi() const
azimuthal angle of momentum vector
TH1F * n_dzladderMeanTrend
float DOFUnbiasedVertex_[nMaxtracks_]
TH1F * n_dzPhiWidthBiasTrend
unsigned int pxbModule(const DetId &id) const
T * make(const Args &...args) const
make new ROOT object
double d3DFromMyVertex_[nMaxtracks_]
char const * what() const override
void fillTrendPlotByIndex(TH1F *trendPlot, std::vector< TH1F * > &h, PVValHelper::estimator fitPar_, PVValHelper::plotVariable plotVar=PVValHelper::END_OF_PLOTS)
std::vector< TH1F * > a_reszPhiResiduals
double dxyBs_[nMaxtracks_]
double zPCA_[nMaxtracks_]
std::vector< TH1F * > a_IP2DPhiResiduals
TH1F * a_dxyPhiWidthBiasTrend
float chi2ProbUnbiasedVertex_[nMaxtracks_]
double px() const
x coordinate of momentum vector
int pixelLayersWithMeasurement() const
std::vector< TH1F * > n_reszEtaResiduals
double dxyFromMyVertex_[nMaxtracks_]
TH1F * a_dzPhiWidthBiasTrend
TH1F * a_dzladderWidthTrend
TH1F * h_probeRefitVSig3D_
Measurement1D getMAD(TH1F *histo)
std::map< std::string, TH1 * > bookVertexHistograms(const TFileDirectory &dir)
int trackerLayersWithMeasurement() const
const Point & position() const
position
static bool pixelBarrelHitFilter(uint16_t pattern)
std::vector< TH1F * > h_dz_modZ_
std::vector< TH1F * > h_dxy_modZ_
std::vector< TH1F * > a_dxEtaResiduals
bool isBFieldConsistentWithMode(const edm::EventSetup &iSetup) const
std::pair< bool, bool > pixelHitsCheck(const reco::TransientTrack &track)
TrajectoryStateClosestToBeamLine stateAtBeamLine() const
int numberOfValidStripTOBHits() const
plotLabels getVarString(plotVariable var)
TH1F * h_probereszRefitV_
double dzErrorFromMyVertex_[nMaxtracks_]
std::vector< TH1F * > n_dxyEtaBiasResiduals
void fillTrackHistos(std::map< std::string, TH1 * > &h, const std::string &ttype, const reco::TransientTrack *tt, const reco::Vertex &v, const reco::BeamSpot &beamSpot, double fBfield)
LuminosityBlockNumber_t luminosityBlock() const
int isHighPurity_[nMaxtracks_]
int nhitsTIB_[nMaxtracks_]
static bool pixelEndcapHitFilter(uint16_t pattern)
std::vector< TH1F * > n_dxyEtaResiduals
TH1F * h_probeRefitVSigResZ_
double qoverp_[nMaxtracks_]
double IPTsigFromMyVertex_[nMaxtracks_]
static bool validHitFilter(uint16_t pattern)
bool isThere(GeomDetEnumerators::SubDetector subdet) const
const math::XYZPoint & innerPosition() const
position of the innermost hit
TrackAlgorithm algo() const
TH1F * a_dzEtaMedianTrend
std::vector< TH1F * > a_dzPhiBiasResiduals
double theta_[nMaxtracks_]
TH1F * a_dxyPhiMedianTrend
TH1F * a_dxypTCentralWidthTrend
double longitudinalImpactParameter() const
std::vector< TH1F * > h_norm_dxy_pT_
const DetContainer & dets() const override
Returm a vector of all GeomDet (including all GeomDetUnits)
std::vector< TH1F * > a_dzEtaResiduals
TH1F * a_dzPhiMeanBiasTrend
const Point & vertex() const
reference point on the track. This method is DEPRECATED, please use referencePoint() instead ...
float getHigh(residualType type, plotVariable plot)
int tracksUsedForVertexing_[nMaxtracks_]
float getLow(residualType type, plotVariable plot)
TH1F * n_dxymodZWidthTrend
TH1F * h_fitVtxTrackAverageWeight_
TFileDirectory Width2DMapsDir
int isGoodTrack_[nMaxtracks_]
double eta() const
pseudorapidity of momentum vector
std::vector< TH1F * > a_dxyEtaBiasResiduals
TH1F * a_dxyPhiMADBiasTrend
unsigned int LuminosityBlockNumber_
TH1F * a_dxyPhiWidthTrend
int numberOfValidPixelBarrelHits() const
double zErrOfflineVertex_
TH1F * h_yErrOfflineVertex
std::vector< TH1F * > h_norm_dxy_ladder_
const PerigeeTrajectoryParameters & perigeeParameters() const
int nhitsFPIX_[nMaxtracks_]
bool useTracksFromRecoVtx_
std::vector< TH1F * > a_dzPhiResiduals
double chi2() const
chi-squared of the fit
TH1F * n_dzPhiMADBiasTrend
double yUnbiasedVertex_[nMaxtracks_]
TH1F * h_probeRecoVSigXY_
virtual int dimension() const =0
bool forceBeamSpotContraint_
TH1F * h_probeRefitVLogSig3D_
TH1F * h_fitVtxTrackWeights_
TH1F * a_dxymodZWidthTrend
double pt() const
track transverse momentum
std::vector< TH1F * > n_dxyPhiResiduals
double transverseImpactParameter() const
Cos< T >::type cos(const T &t)
static const int nPtBins_
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
unsigned int EventNumber_
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
int numberOfAllHits(HitCategory category) const
std::map< plotVariable, std::vector< float > > trendbins
Tan< T >::type tan(const T &t)
Abs< T >::type abs(const T &t)
int nhitsTID_[nMaxtracks_]
double chi2() const
chi-squares
double zUnbiasedVertex_[nMaxtracks_]
int numberOfValidStripTIDHits() const
double lambda() const
Lambda angle.
TH1F * a_dzPhiMedianTrend
double BeamWidthX() const
beam width X
std::vector< TH1F * > h_dxy_ladder_
unsigned short numberOfValidHits() const
number of valid hits found
int numberOfValidStripTECHits() const
float chi2normUnbiasedVertex_[nMaxtracks_]
TH1F * n_d3DResidualsMap[nMaxBins_][nMaxBins_]
T * make(const Args &...args) const
make new ROOT object
std::vector< TH1F * > a_dxyPhiResiduals
TH1I * h_probeHasBPixL1Overlap_
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
std::vector< TH1F * > a_dxyPhiBiasResiduals
edm::EDGetTokenT< reco::VertexCollection > theVertexCollectionToken
void analyze(const edm::Event &, const edm::EventSetup &) override
TH1F * n_dzEtaWidthBiasTrend
TH1F * a_d3DResidualsMap[nMaxBins_][nMaxBins_]
TH1F * n_dzEtaMADBiasTrend
std::vector< TH1F * > h_dxy_ladderNoOverlap_
double IPLsigFromMyVertex_[nMaxtracks_]
double dzBs_[nMaxtracks_]
double yPCA_[nMaxtracks_]
bool hasFirstLayerPixelHits(const reco::TransientTrack &track)
std::vector< TH1F * > n_dzEtaResiduals
double dxdz() const
dxdz slope
TH1F * a_dxyEtaWidthTrend
void setMap(residualType type, plotVariable plot, float low, float high)
FTS const & trackStateAtPCA() const
double pz() const
z coordinate of momentum vector
virtual std::vector< std::vector< reco::TransientTrack > > clusterize(const std::vector< reco::TransientTrack > &tracks) const =0
TH1F * n_dzPhiMeanBiasTrend
bin
set the eta bin as selection string.
std::vector< TH1F * > n_IP3DEtaResiduals
TH1F * h_nOfflineVertices
unsigned int pxbLayer(const DetId &id) const
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
int nhits2D_[nMaxtracks_]
TH1F * a_dxyEtaMedianBiasTrend
double dzError() const
error on dz
std::map< std::pair< residualType, plotVariable >, std::pair< float, float > > range
double vz() const
z coordinate of the reference point on track
std::vector< TH1F * > h_norm_dz_pT_
GlobalPoint position() const
TH1F * n_dzPhiMedianBiasTrend
void fillMap(TH2F *trendMap, TH1F *residualsMapPlot[100][100], PVValHelper::estimator fitPar_)
static TrackQuality qualityByName(const std::string &name)
double xError() const
error on x
std::vector< TH1F * > h_dz_pT_
plotLabels getTypeString(residualType type)
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
TH1F * a_dzladderMeanTrend
void fill(std::map< std::string, TH1 * > &h, const std::string &s, double x)
void shrinkHistVectorToFit(std::vector< TH1F * > &h, unsigned int desired_size)
std::vector< TH1F * > n_dzEtaBiasResiduals
edm::Service< TFileService > fs
std::vector< TH1F * > h_dz_Central_pT_
TH1F * n_dzEtaMeanBiasTrend
const Track & track() const
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
bool isHit2D(const TrackingRecHit &hit) const
int nhitsTOB_[nMaxtracks_]
double chi2ndof_[nMaxtracks_]
TH1F * a_dxymodZMeanTrend
std::vector< TH1F * > h_dz_ladder_
std::vector< TH1F * > a_IP2DEtaResiduals
XYZPointD XYZPoint
point in space with cartesian internal representation
double sigmaZ() const
sigma z
int pixelBarrelLayersWithMeasurement() const
TFileDirectory Mean2DMapsDir
int nhitsTEC_[nMaxtracks_]
double BeamWidthY() const
beam width Y
TrackClusterizerInZ * theTrackClusterizer_
double yErrOfflineVertex_
std::vector< TH1F * > n_IP2DPhiResiduals
double xPCA_[nMaxtracks_]
double xUnbiasedVertex_[nMaxtracks_]
std::vector< TH1F * > h_dxy_Central_pT_
TH1F * n_dxypTCentralWidthTrend
TH1F * n_dxyPhiWidthTrend
virtual std::vector< reco::TransientTrack > select(const std::vector< reco::TransientTrack > &tracks) const =0
int numberOfValidStripTIBHits() const
TH1F * a_dzpTCentralMeanTrend
bool quality(const TrackQuality) const
Track quality.
int numberOfLostHits(HitCategory category) const
TH1F * a_dxypTCentralMeanTrend
TFileDirectory MedianTrendsDir
int numberOfValidPixelEndcapHits() const
TH1F * a_dxyEtaMeanBiasTrend
edm::EDGetTokenT< reco::BeamSpot > theBeamspotToken
TH1F * n_dxypTCentralMeanTrend
edm::EDGetTokenT< reco::TrackCollection > theTrackCollectionToken
EventID const & id() const
~PrimaryVertexValidation() override
TH1F * a_dzEtaMedianBiasTrend
Pixel cluster – collection of neighboring pixels above threshold.
double vy() const
y coordinate of the reference point on track
TString units(TString variable, Char_t axis)
double dzFromMyVertex_[nMaxtracks_]
std::array< float, nPtBins_+1 > mypT_bins_
TH1F * n_dxyEtaWidthTrend
TH1F * a_dxyPhiMeanBiasTrend
static int position[264][3]
unsigned short found() const
Number of valid hits on track.
TH1F * h_probeHitsInBPIX_
TH1F * h_recoVtxChi2Prob_
TH1F * h_probeHitsInFPIX_
TH1F * n_dxyEtaWidthBiasTrend
std::vector< TH1F * > a_reszEtaResiduals
std::vector< TH1F * > bookResidualsHistogram(const TFileDirectory &dir, unsigned int theNOfBins, PVValHelper::residualType resType, PVValHelper::plotVariable varType, bool isNormalized=false)
std::vector< TrackBaseRef >::const_iterator trackRef_iterator
The iteratator for the vector<TrackRef>
double y0() const
y coordinate
TH1F * a_dzmodZWidthTrend
TH1F * n_dxyladderMeanTrend
TH1F * a_dxyBiasResidualsMap[nMaxBins_][nMaxBins_]
TH1F * h_zErrOfflineVertex
std::vector< TH1F * > a_dxPhiResiduals
std::vector< TH1F * > h_norm_dz_modZ_
int charge() const
track electric charge
const Point & position() const
position
TH1F * n_dxyResidualsMap[nMaxBins_][nMaxBins_]
bool passesTrackCuts(const reco::Track &track, const reco::Vertex &vertex, const std::string &qualityString_, double dxyErrMax_, double dzErrMax_, double ptErrMax_)
TH1F * n_dzpTCentralMeanTrend
static const G4double kappa
TH1F * n_dzPhiMedianTrend
double normalizedChi2() const
chi-squared divided by n.d.o.f.
double dxyErrorFromMyVertex_[nMaxtracks_]
DetId geographicalId() const
std::vector< TH1F * > a_dyEtaResiduals
TH1F * n_dxyPhiWidthBiasTrend
trackRef_iterator tracks_begin() const
first iterator over tracks
std::vector< TH1F * > n_IP2DEtaResiduals
std::vector< TH1F * > h_norm_dz_ladder_
uint16_t getHitPattern(HitCategory category, int position) const
TH1F * n_dzladderWidthTrend
float sumOfWeightsUnbiasedVertex_[nMaxtracks_]
TH1F * n_dzBiasResidualsMap[nMaxBins_][nMaxBins_]
double d3DErrorFromMyVertex_[nMaxtracks_]
std::vector< TH1F * > a_dyPhiResiduals
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
TH1F * n_dxymodZMeanTrend
std::vector< TH1F * > h_dxy_ladderOverlap_
TH1F * n_dzEtaMedianBiasTrend
TH1F * a_dzBiasResidualsMap[nMaxBins_][nMaxBins_]
PVValHelper::histodetails theDetails_
T const * product() const
TH1F * a_dxyEtaMedianTrend
int hasRecVertex_[nMaxtracks_]
TH1F * a_dzResidualsMap[nMaxBins_][nMaxBins_]
Power< A, B >::type pow(const A &a, const B &b)
double xErrOfflineVertex_
double yError() const
error on y
TH1F * a_dzEtaMeanBiasTrend
float chi2UnbiasedVertex_[nMaxtracks_]
TH1F * n_dzpTCentralWidthTrend
size_t tracksSize() const
number of tracks
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
std::vector< TH1F * > h_norm_dxy_Central_pT_
TH1F * n_dzmodZWidthTrend
double py() const
y coordinate of momentum vector
double vx() const
x coordinate of the reference point on track
TH1F * n_dxyPhiMedianBiasTrend
TH1F * n_dxyPhiMeanBiasTrend
Global3DVector GlobalVector
double chi2_[nMaxtracks_]
std::vector< TH1F * > a_dzEtaBiasResiduals
std::vector< TH1F * > a_IP3DPhiResiduals
TH1F * n_dxyladderWidthTrend
int nhitsBPIX_[nMaxtracks_]
std::vector< TH1F * > n_dzPhiBiasResiduals
double x0() const
x coordinate
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.
double IP3DsigFromMyVertex_[nMaxtracks_]