67 storeNtuple_(iConfig.getParameter<bool>(
"storeNtuple")),
68 lightNtupleSwitch_(iConfig.getParameter<bool>(
"isLightNtuple")),
69 useTracksFromRecoVtx_(iConfig.getParameter<bool>(
"useTracksFromRecoVtx")),
70 vertexZMax_(iConfig.getUntrackedParameter<double>(
"vertexZMax",99.)),
71 askFirstLayerHit_(iConfig.getParameter<bool>(
"askFirstLayerHit")),
72 doBPix_(iConfig.getUntrackedParameter<bool>(
"doBPix",
true)),
73 doFPix_(iConfig.getUntrackedParameter<bool>(
"doFPix",
true)),
74 ptOfProbe_(iConfig.getUntrackedParameter<double>(
"probePt",0.)),
75 etaOfProbe_(iConfig.getUntrackedParameter<double>(
"probeEta",2.4)),
76 nBins_(iConfig.getUntrackedParameter<
int>(
"numberOfBins",24)),
77 debug_(iConfig.getParameter<bool>(
"Debug")),
78 runControl_(iConfig.getUntrackedParameter<bool>(
"runControl",
false))
86 std::vector<unsigned int> defaultRuns;
87 defaultRuns.push_back(0);
106 if (clusteringAlgorithm==
"gap"){
108 }
else if(clusteringAlgorithm==
"DA"){
111 }
else if(clusteringAlgorithm==
"DA_vect") {
114 throw VertexException(
"PrimaryVertexProducerAlgorithm: unknown clustering algorithm: " + clusteringAlgorithm);
136 using namespace reco;
143 bool passesRunControl =
false;
151 passesRunControl =
true;
155 if (!passesRunControl)
return;
187 edm::LogInfo(
"tracker geometry read")<<
"There are: "<< pDD->
dets().size() <<
" detectors";
193 edm::LogInfo(
"PrimaryVertexValidation")<<
" pixel phase1 setup ";
196 edm::LogInfo(
"PrimaryVertexValidation")<<
" pixel phase0 setup ";
216 double fBfield_=((*theB_).field()->inTesla(
GlobalPoint(0.,0.,0.))).
z();
235 LogTrace(
"PrimaryVertexValidation")<<
"caught std::exception "<<er.
what()<<std::endl;
238 std::vector<Vertex> vsorted = *(
vertices);
244 if( vsorted.size() == 0)
return;
248 if ( vsorted[0].isValid() ) {
265 unsigned int vertexCollectionSize = vsorted.size();
268 for (
unsigned int i=0;
i<vertexCollectionSize;
i++) {
269 const Vertex& vertex = vsorted.at(
i);
270 if (vertex.
isValid()) nvvertex++;
281 double chi2prob = 0.;
283 if (!vsorted.at(0).isFake()) {
296 double pt = (**itrk).pt();
301 double dxyRes = (**itrk).dxy(myVertex);
302 double dzRes = (**itrk).dz(myVertex);
304 double dxy_err = (**itrk).dxyError();
305 double dz_err = (**itrk).dzError();
307 float trackphi = ((**itrk).phi())*(180/
TMath::Pi());
308 float tracketa = (**itrk).eta();
318 if(tracketa >= etaF && tracketa < etaL ){
327 if(trackphi >= phiF && trackphi < phiL ){
334 for(
int j=0; j<
nBins_; j++){
339 if(tracketa >= etaJ && tracketa < etaK ){
366 if ( beamSpotHandle.
isValid() ) {
367 beamSpot = *beamSpotHandle;
402 edm::LogInfo(
"PrimaryVertexValidation")<<
" looping over "<<trackCollectionHandle->size()<<
"tracks";
404 h_nTracks->Fill(trackCollectionHandle->size());
410 std::vector<TransientTrack> t_tks;
412 for(TrackCollection::const_iterator
track = trackCollectionHandle->begin();
track!= trackCollectionHandle->end(); ++
track, ++
k){
421 edm::LogInfo(
"PrimaryVertexValidation") <<
"Found: " << t_tks.size() <<
" reconstructed tracks";
437 edm::LogInfo(
"PrimaryVertexValidation")<<
" looping over: "<< clusters.size() <<
" clusters from " << t_tks.size() <<
" selected tracks";
447 for (vector< vector<TransientTrack> >::const_iterator iclus = clusters.begin(); iclus != clusters.end(); iclus++) {
452 for(vector<TransientTrack>::const_iterator theTTrack = iclus->begin(); theTTrack!= iclus->end(); ++theTTrack, ++
i)
459 const Track & theTrack = theTTrack->track();
501 if((*iHit)->isValid()) {
503 if (this->
isHit2D(**iHit)) {++nRecHit2D;}
531 vector<TransientTrack> theFinalTracks;
532 theFinalTracks.clear();
534 for(vector<TransientTrack>::const_iterator tk = iclus->begin(); tk!= iclus->end(); ++tk){
538 if( tk == theTTrack )
continue;
540 theFinalTracks.push_back((*tk));
545 if(theFinalTracks.size() > 1){
548 edm::LogInfo(
"PrimaryVertexValidation")<<
"Transient Track Collection size: "<<theFinalTracks.size();
557 double totalTrackWeights=0;
558 if(theFittedVertex.
isValid ()){
562 for(
size_t rtracks= 0; rtracks < theFinalTracks.size(); rtracks++){
564 totalTrackWeights+= theFittedVertex.
trackWeight(theFinalTracks[rtracks]);
574 const Vertex vertex = theFittedVertex;
595 double dxyFromMyVertex = theTrack.
dxy(myVertex);
596 double dzFromMyVertex = theTrack.
dz(myVertex);
614 double s_ip2dpv_corr = s_ip2dpv.second.value();
615 double s_ip2dpv_err = s_ip2dpv.second.error();
624 double s_ip3dpv_corr = s_ip3dpv.second.value();
625 double s_ip3dpv_err = s_ip3dpv.second.error();
629 double ip3d_corr = ip3dpv.second.value();
630 double ip3d_err = ip3dpv.second.error();
638 float my_dx = refPoint.
x() - myVertex.x();
639 float my_dy = refPoint.
y() - myVertex.y();
641 float my_dx2 = cPToVtx.
x() - myVertex.x();
642 float my_dy2 = cPToVtx.
y() - myVertex.y();
644 float my_dxy =
std::sqrt(my_dx*my_dx + my_dy*my_dy);
651 edm::LogInfo(
"PrimaryVertexValidation")<<
"my_dx:" << my_dx
652 <<
" my_dy:" << my_dy
653 <<
" my_dxy:" << my_dxy
654 <<
" my_dx2:" << my_dx2
655 <<
" my_dy2:" << my_dy2
657 <<
" dxyFromVtx:" << dxyFromMyVertex <<
"\n" 658 <<
" ============================== "<<
"\n" 661 <<
"diff3:" << (my_dx - my_dx2) <<
" " << (my_dy - my_dy2) <<
"\n" 681 float tracketa = theTrack.
eta();
682 float trackpt = theTrack.
pt();
696 if(!
doBPix_ && (pixelOcc.first ==
true))
continue;
697 if(!
doFPix_ && (pixelOcc.second ==
true))
continue;
725 float dxyRecoV = theTrack.
dz(theRecoVertex);
726 float dzRecoV = theTrack.
dxy(theRecoVertex);
730 double zTrack=(theTTrack->stateAtBeamLine().trackStateAtPCA()).
position().z();
732 double tantheta=
tan((theTTrack->stateAtBeamLine().trackStateAtPCA()).momentum().theta());
735 double restrkz = zTrack-
zVertex;
736 double pulltrkz = (zTrack-
zVertex)/TMath::Sqrt(dz2);
761 n_dxyVsPhi->Fill(trackphi,dxyFromMyVertex/s_ip2dpv_err);
764 a_dxyVsEta->Fill(tracketa,dxyFromMyVertex*cmToum);
766 n_dxyVsEta->Fill(tracketa,dxyFromMyVertex/s_ip2dpv_err);
770 for(
int i=0; i<
nBins_; i++){
778 if(tracketa >= etaF && tracketa < etaL ){
797 if(trackphi >= phiF && trackphi < phiL ){
813 for(
int j=0; j<
nBins_; j++){
818 if(tracketa >= etaJ && tracketa < etaK ){
833 edm::LogInfo(
"PrimaryVertexValidation")<<
" myVertex.x()= "<<myVertex.x()<<
"\n" 834 <<
" myVertex.y()= "<<myVertex.y()<<
" \n" 835 <<
" myVertex.z()= "<<myVertex.z()<<
" \n" 836 <<
" theTrack.dz(myVertex)= "<<theTrack.
dz(myVertex)<<
" \n" 837 <<
" zPCA -myVertex.z() = "<<(theTrack.
vertex().z() -myVertex.z());
845 LogTrace(
"PrimaryVertexValidation")<<
"caught std::exception "<<er.
what()<<std::endl;
852 edm::LogInfo(
"PrimaryVertexValidation")<<
"Not enough tracks to make a vertex. Returns no vertex info";
859 edm::LogInfo(
"PrimaryVertexValidation")<<
"Track "<<i<<
" : pT = "<<theTrack.
pt();
884 if (dynamic_cast<const SiStripRecHit2D*>(&hit))
return false;
885 else if (dynamic_cast<const SiStripMatchedRecHit2D*>(&hit))
return true;
886 else if (dynamic_cast<const ProjectedSiStripRecHit2D*>(&hit))
return false;
888 edm::LogError(
"UnkownType") <<
"@SUB=AlignmentTrackSelector::isHit2D" 889 <<
"Tracker hit not in pixel and neither SiStripRecHit2D nor " 890 <<
"SiStripMatchedRecHit2D nor ProjectedSiStripRecHit2D.";
895 edm::LogWarning(
"DetectorMismatch") <<
"@SUB=AlignmentTrackSelector::isHit2D" 896 <<
"Hit not in tracker with 'official' dimension >=2.";
907 bool hasBPixHits =
false;
908 bool hasFPixHits =
false;
918 return std::make_pair(hasBPixHits,hasFPixHits);
925 using namespace reco;
944 <<
"######################################\n" 946 <<
"######################################";
1039 TH1F::SetDefaultSumw2(kTRUE);
1041 h_nTracks = EventFeatures.
make<TH1F>(
"h_nTracks",
"number of tracks per event;n_{tracks}/event;n_{events}",300,-0.5,299.5);
1042 h_nClus = EventFeatures.
make<TH1F>(
"h_nClus",
"number of track clusters;n_{clusters}/event;n_{events}",50,-0.5,49.5);
1043 h_nOfflineVertices = EventFeatures.
make<TH1F>(
"h_nOfflineVertices",
"number of offline reconstructed vertices;n_{vertices}/event;n_{events}",50,-0.5,49.5);
1044 h_runNumber = EventFeatures.
make<TH1F>(
"h_runNumber",
"run number;run number;n_{events}",100000,150000.,250000.);
1045 h_xOfflineVertex = EventFeatures.
make<TH1F>(
"h_xOfflineVertex",
"x-coordinate of offline vertex;x_{vertex};n_{events}",100,-0.1,0.1);
1046 h_yOfflineVertex = EventFeatures.
make<TH1F>(
"h_yOfflineVertex",
"y-coordinate of offline vertex;y_{vertex};n_{events}",100,-0.1,0.1);
1047 h_zOfflineVertex = EventFeatures.
make<TH1F>(
"h_zOfflineVertex",
"z-coordinate of offline vertex;z_{vertex};n_{events}",100,-30.,30.);
1048 h_xErrOfflineVertex = EventFeatures.
make<TH1F>(
"h_xErrOfflineVertex",
"x-coordinate error of offline vertex;err_{x}^{vtx};n_{events}",100,0.,0.01);
1049 h_yErrOfflineVertex = EventFeatures.
make<TH1F>(
"h_yErrOfflineVertex",
"y-coordinate error of offline vertex;err_{y}^{vtx};n_{events}",100,0.,0.01);
1050 h_zErrOfflineVertex = EventFeatures.
make<TH1F>(
"h_zErrOfflineVertex",
"z-coordinate error of offline vertex;err_{z}^{vtx};n_{events}",100,0.,10.);
1051 h_BSx0 = EventFeatures.
make<TH1F>(
"h_BSx0",
"x-coordinate of reco beamspot;x^{BS}_{0};n_{events}",100,-0.1,0.1);
1052 h_BSy0 = EventFeatures.
make<TH1F>(
"h_BSy0",
"y-coordinate of reco beamspot;y^{BS}_{0};n_{events}",100,-0.1,0.1);
1053 h_BSz0 = EventFeatures.
make<TH1F>(
"h_BSz0",
"z-coordinate of reco beamspot;z^{BS}_{0};n_{events}",100,-1.,1.);
1054 h_Beamsigmaz = EventFeatures.
make<TH1F>(
"h_Beamsigmaz",
"z-coordinate beam width;#sigma_{Z}^{beam};n_{events}",100,0.,1.);
1055 h_BeamWidthX = EventFeatures.
make<TH1F>(
"h_BeamWidthX",
"x-coordinate beam width;#sigma_{X}^{beam};n_{events}",100,0.,0.01);
1056 h_BeamWidthY = EventFeatures.
make<TH1F>(
"h_BeamWidthY",
"y-coordinate beam width;#sigma_{Y}^{beam};n_{events}",100,0.,0.01);
1058 h_etaMax = EventFeatures.
make<TH1F>(
"etaMax",
"etaMax",1,-0.5,0.5);
1059 h_nbins = EventFeatures.
make<TH1F>(
"nbins",
"nbins",1,-0.5,0.5);
1064 h_probePt_ = ProbeFeatures.
make<TH1F>(
"h_probePt",
"p_{T} of probe track;track p_{T} (GeV); tracks",100,0.,50.);
1065 h_probeP_ = ProbeFeatures.
make<TH1F>(
"h_probeP",
"momentum of probe track;track p (GeV); tracks",100,0.,100.);
1066 h_probeEta_ = ProbeFeatures.
make<TH1F>(
"h_probeEta",
"#eta of the probe track;track #eta;tracks",54,-2.8,2.8);
1067 h_probePhi_ = ProbeFeatures.
make<TH1F>(
"h_probePhi",
"#phi of probe track;track #phi (rad);tracks",100,-3.15,3.15);
1069 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);
1070 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.);
1072 h_probeChi2_ = ProbeFeatures.
make<TH1F>(
"h_probeChi2",
"#chi^{2} of probe track;track #chi^{2}; tracks",100,0.,100.);
1073 h_probeNormChi2_ = ProbeFeatures.
make<TH1F>(
"h_probeNormChi2",
" normalized #chi^{2} of probe track;track #chi^{2}/ndof; tracks",100,0.,10.);
1074 h_probeCharge_ = ProbeFeatures.
make<TH1F>(
"h_probeCharge",
"charge of profe track;track charge Q;tracks",3,-1.5,1.5);
1075 h_probeQoverP_ = ProbeFeatures.
make<TH1F>(
"h_probeQoverP",
"q/p of probe track; track Q/p (GeV^{-1});tracks",200,-1.,1.);
1076 h_probedzRecoV_ = ProbeFeatures.
make<TH1F>(
"h_probedzRecoV",
"d_{z}(V_{offline}) of probe track;track d_{z}(V_{off}) (cm);tracks",200,-1.,1.);
1077 h_probedxyRecoV_ = ProbeFeatures.
make<TH1F>(
"h_probedxyRecoV",
"d_{xy}(V_{offline}) of probe track;track d_{xy}(V_{off}) (cm);tracks",200,-1.,1.);
1078 h_probedzRefitV_ = ProbeFeatures.
make<TH1F>(
"h_probedzRefitV",
"d_{z}(V_{refit}) of probe track;track d_{z}(V_{fit}) (cm);tracks",200,-1.,1.);
1079 h_probesignIP2DRefitV_ = ProbeFeatures.
make<TH1F>(
"h_probesignIPRefitV",
"ip_{2D}(V_{refit}) of probe track;track ip_{2D}(V_{fit}) (cm);tracks",200,-1.,1.);
1080 h_probedxyRefitV_ = ProbeFeatures.
make<TH1F>(
"h_probedxyRefitV",
"d_{xy}(V_{refit}) of probe track;track d_{xy}(V_{fit}) (cm);tracks",200,-1.,1.);
1082 h_probez0RefitV_ = ProbeFeatures.
make<TH1F>(
"h_probez0RefitV",
"z_{0}(V_{refit}) of probe track;track z_{0}(V_{fit}) (cm);tracks",200,-1.,1.);
1083 h_probed0RefitV_ = ProbeFeatures.
make<TH1F>(
"h_probed0RefitV",
"d_{0}(V_{refit}) of probe track;track d_{0}(V_{fit}) (cm);tracks",200,-1.,1.);
1085 h_probed3DRefitV_ = ProbeFeatures.
make<TH1F>(
"h_probed3DRefitV",
"d_{3D}(V_{refit}) of probe track;track d_{3D}(V_{fit}) (cm);tracks",200,0.,1.);
1086 h_probereszRefitV_ = ProbeFeatures.
make<TH1F>(
"h_probeReszRefitV",
"z_{track} -z_{V_{refit}};track res_{z}(V_{refit}) (cm);tracks",200,-1.,1.);
1088 h_probeRecoVSigZ_ = ProbeFeatures.
make<TH1F>(
"h_probeRecoVSigZ" ,
"Longitudinal DCA Significance (reco);d_{z}(V_{off})/#sigma_{dz};tracks",100,-8,8);
1089 h_probeRecoVSigXY_ = ProbeFeatures.
make<TH1F>(
"h_probeRecoVSigXY" ,
"Transverse DCA Significance (reco);d_{xy}(V_{off})/#sigma_{dxy};tracks",100,-8,8);
1090 h_probeRefitVSigZ_ = ProbeFeatures.
make<TH1F>(
"h_probeRefitVSigZ" ,
"Longitudinal DCA Significance (refit);d_{z}(V_{fit})/#sigma_{dz};tracks",100,-8,8);
1091 h_probeRefitVSigXY_= ProbeFeatures.
make<TH1F>(
"h_probeRefitVSigXY",
"Transverse DCA Significance (refit);d_{xy}(V_{fit})/#sigma_{dxy};tracks",100,-8,8);
1092 h_probeRefitVSig3D_= ProbeFeatures.
make<TH1F>(
"h_probeRefitVSig3D",
"3D DCA Significance (refit);d_{3D}/#sigma_{3D};tracks",100,0.,20.);
1093 h_probeRefitVLogSig3D_ = ProbeFeatures.
make<TH1F>(
"h_probeRefitVLogSig3D",
"log_{10}(3D DCA-Significance) (refit);log_{10}(d_{3D}/#sigma_{3D});tracks",100,-5.,4.);
1094 h_probeRefitVSigResZ_ = ProbeFeatures.
make<TH1F>(
"h_probeRefitVSigResZ" ,
"Longitudinal residual significance (refit);(z_{track} -z_{V_{fit}})/#sigma_{res_{z}};tracks",100,-8,8);
1096 h_probeHits_ = ProbeFeatures.
make<TH1F>(
"h_probeNRechits" ,
"N_{hits} ;N_{hits} ;tracks",40,-0.5,39.5);
1097 h_probeHits1D_ = ProbeFeatures.
make<TH1F>(
"h_probeNRechits1D" ,
"N_{hits} 1D ;N_{hits} 1D ;tracks",40,-0.5,39.5);
1098 h_probeHits2D_ = ProbeFeatures.
make<TH1F>(
"h_probeNRechits2D" ,
"N_{hits} 2D ;N_{hits} 2D ;tracks",40,-0.5,39.5);
1099 h_probeHitsInTIB_ = ProbeFeatures.
make<TH1F>(
"h_probeNRechitsTIB" ,
"N_{hits} TIB ;N_{hits} TIB;tracks",40,-0.5,39.5);
1100 h_probeHitsInTOB_ = ProbeFeatures.
make<TH1F>(
"h_probeNRechitsTOB" ,
"N_{hits} TOB ;N_{hits} TOB;tracks",40,-0.5,39.5);
1101 h_probeHitsInTID_ = ProbeFeatures.
make<TH1F>(
"h_probeNRechitsTID" ,
"N_{hits} TID ;N_{hits} TID;tracks",40,-0.5,39.5);
1102 h_probeHitsInTEC_ = ProbeFeatures.
make<TH1F>(
"h_probeNRechitsTEC" ,
"N_{hits} TEC ;N_{hits} TEC;tracks",40,-0.5,39.5);
1103 h_probeHitsInBPIX_ = ProbeFeatures.
make<TH1F>(
"h_probeNRechitsBPIX",
"N_{hits} BPIX;N_{hits} BPIX;tracks",40,-0.5,39.5);
1104 h_probeHitsInFPIX_ = ProbeFeatures.
make<TH1F>(
"h_probeNRechitsFPIX",
"N_{hits} FPIX;N_{hits} FPIX;tracks",40,-0.5,39.5);
1108 h_fitVtxNtracks_ = RefitVertexFeatures.
make<TH1F>(
"h_fitVtxNtracks" ,
"N_{trks} used in vertex fit;N^{fit}_{tracks};vertices" ,100,-0.5,99.5);
1109 h_fitVtxNdof_ = RefitVertexFeatures.
make<TH1F>(
"h_fitVtxNdof" ,
"N_{DOF} of vertex fit;N_{DOF} of refit vertex;vertices" ,100,-0.5,99.5);
1110 h_fitVtxChi2_ = RefitVertexFeatures.
make<TH1F>(
"h_fitVtxChi2" ,
"#chi^{2} of vertex fit;vertex #chi^{2};vertices" ,100,-0.5,99.5);
1111 h_fitVtxChi2ndf_ = RefitVertexFeatures.
make<TH1F>(
"h_fitVtxChi2ndf" ,
"#chi^{2}/ndf of vertex fit;vertex #chi^{2}/ndf;vertices" ,100,-0.5,9.5);
1112 h_fitVtxChi2Prob_ = RefitVertexFeatures.
make<TH1F>(
"h_fitVtxChi2Prob" ,
"Prob(#chi^{2},ndf) of vertex fit;Prob(#chi^{2},ndf);vertices",40,0.,1.);
1113 h_fitVtxTrackWeights_ = RefitVertexFeatures.
make<TH1F>(
"h_fitVtxTrackWeights",
"track weights associated to track;track weights;tracks",40,0.,1.);
1114 h_fitVtxTrackAverageWeight_ = RefitVertexFeatures.
make<TH1F>(
"h_fitVtxTrackAverageWeight_",
"average track weight per vertex;#LT track weight #GT;vertices",40,0.,1.);
1119 h_recoVtxNtracks_ = RecoVertexFeatures.
make<TH1F>(
"h_recoVtxNtracks" ,
"N^{vtx}_{trks};N^{vtx}_{trks};vertices" ,100,-0.5,99.5);
1120 h_recoVtxChi2ndf_ = RecoVertexFeatures.
make<TH1F>(
"h_recoVtxChi2ndf" ,
"#chi^{2}/ndf vtx;#chi^{2}/ndf vtx;vertices" ,10,-0.5,9.5);
1121 h_recoVtxChi2Prob_ = RecoVertexFeatures.
make<TH1F>(
"h_recoVtxChi2Prob" ,
"Prob(#chi^{2},ndf);Prob(#chi^{2},ndf);vertices",40,0.,1.);
1122 h_recoVtxSumPt_ = RecoVertexFeatures.
make<TH1F>(
"h_recoVtxSumPt" ,
"Sum(p^{trks}_{T});Sum(p^{trks}_{T});vertices" ,100,0.,200.);
1137 float dxymax_phi = 2000;
1138 float dzmax_phi = 2000;
1139 float dxymax_eta = 3000;
1140 float dzmax_eta = 3000;
1142 float d3Dmax_phi = hypot(dxymax_phi,dzmax_phi);
1143 float d3Dmax_eta = hypot(dxymax_eta,dzmax_eta);
1145 const int mybins_ = 500;
1186 Form(
"%.2f#circ<#varphi^{probe}_{tk}<%.2f#circ;d_{xy} [#mum];tracks",phiF,phiL),
1187 mybins_,-dxymax_phi,dxymax_phi);
1190 Form(
"%.2f<#eta^{probe}_{tk}<%.2f;d_{xy} [#mum];tracks",etaF,etaL),
1191 mybins_,-dxymax_eta,dxymax_eta);
1197 Form(
"%.2f#circ<#varphi^{probe}_{tk}<%.2f#circ;d_{x} [#mum];tracks",phiF,phiL),
1198 mybins_,-dxymax_phi,dxymax_phi);
1201 Form(
"%.2f<#eta^{probe}_{tk}<%.2f;d_{x} [#mum];tracks",etaF,etaL),
1202 mybins_,-dxymax_eta,dxymax_eta);
1208 Form(
"%.2f#circ<#varphi^{probe}_{tk}<%.2f#circ;d_{y} [#mum];tracks",phiF,phiL),
1209 mybins_,-dxymax_phi,dxymax_phi);
1212 Form(
"%.2f<#eta^{probe}_{tk}<%.2f;d_{y} [#mum];tracks",etaF,etaL),
1213 mybins_,-dxymax_eta,dxymax_eta);
1218 Form(
"%.2f#circ<#varphi^{probe}_{tk}<%.2f#circ;IP_{2D} [#mum];tracks",phiF,phiL),
1219 mybins_,-dxymax_phi,dxymax_phi);
1222 Form(
"%.2f<#eta^{probe}_{tk}<%.2f;IP_{2D} [#mum];tracks",etaF,etaL),
1223 mybins_,-dxymax_eta,dxymax_eta);
1228 Form(
"%.2f#circ<#varphi^{probe}_{tk}<%.2f#circ;IP_{3D} [#mum];tracks",phiF,phiL),
1229 mybins_,-dxymax_phi,dxymax_phi);
1232 Form(
"%.2f<#eta^{probe}_{tk}<%.2f;IP_{3D} [#mum];tracks",etaF,etaL),
1233 mybins_,-dxymax_eta,dxymax_eta);
1238 Form(
"%.2f#circ<#varphi^{probe}_{tk}<%.2f#circ;d_{z} [#mum];tracks",phiF,phiL),
1239 mybins_,-dzmax_phi,dzmax_phi);
1242 Form(
"%.2f<#eta^{probe}_{tk}<%.2f;d_{z} [#mum];tracks",etaF,etaL),
1243 mybins_,-dzmax_eta,dzmax_eta);
1249 Form(
"%.2f#circ<#varphi^{probe}_{tk}<%.2f#circ;z_{trk} - z_{vtx} [#mum];tracks",phiF,phiL),
1250 mybins_,-dzmax_phi,dzmax_phi);
1253 Form(
"%.2f<#eta^{probe}_{tk}<%.2f;z_{trk} - z_{vtx} [#mum];tracks",etaF,etaL),
1254 mybins_,-dzmax_eta,dzmax_eta);
1259 Form(
"%.2f#circ<#varphi^{probe}_{tk}<%.2f#circ;d_{3D} [#mum];tracks",phiF,phiL),
1260 mybins_,0.,d3Dmax_phi);
1263 Form(
"%.2f<#eta^{probe}_{tk}<%.2f;d_{3D} [#mum];tracks",etaF,etaL),
1264 mybins_,0.,d3Dmax_eta);
1275 Form(
"%.2f#circ<#varphi^{probe}_{tk}<%.2f#circ;d_{xy}/#sigma_{d_{xy}};tracks",phiF,phiL),
1276 mybins_,-dxymax_phi/100.,dxymax_phi/100.);
1279 Form(
"%.2f<#eta^{probe}_{tk}<%.2f;d_{xy}/#sigma_{d_{xy}};tracks",etaF,etaL),
1280 mybins_,-dxymax_eta/100.,dxymax_eta/100.);
1285 Form(
"%.2f#circ<#varphi^{probe}_{tk}<%.2f#circ;IP_{2D}/#sigma_{IP_{2D}};tracks",phiF,phiL),
1286 mybins_,-dxymax_phi/100.,dxymax_phi/100.);
1289 Form(
"%.2f<#eta^{probe}_{tk}<%.2f;IP_{2D}/#sigma_{IP_{2D}};tracks",etaF,etaL),
1290 mybins_,-dxymax_eta/100.,dxymax_eta/100.);
1295 Form(
"%.2f#circ<#varphi^{probe}_{tk}<%.2f#circ;IP_{3D}/#sigma_{IP_{3D}};tracks",phiF,phiL),
1296 mybins_,-dxymax_phi/100.,dxymax_phi/100.);
1299 Form(
"%.2f<#eta^{probe}_{tk}<%.2f;IP_{3D}/#sigma_{IP_{3D}};tracks",etaF,etaL),
1300 mybins_,-dxymax_eta/100.,dxymax_eta/100.);
1305 Form(
"%.2f#circ<#varphi^{probe}_{tk}<%.2f#circ;d_{z}/#sigma_{d_{z}};tracks",phiF,phiL),
1306 mybins_,-dzmax_phi/100.,dzmax_phi/100.);
1309 Form(
"%.2f<#eta^{probe}_{tk}<%.2f;d_{z}/#sigma_{d_{z}};tracks",etaF,etaL),
1310 mybins_,-dzmax_eta/100.,dzmax_eta/100.);
1315 Form(
"%.2f#circ<#varphi^{probe}_{tk}<%.2f#circ;(z_{trk}-z_{vtx})/#sigma_{res_{z}};tracks",phiF,phiL),
1316 mybins_,-dzmax_phi/100.,dzmax_phi/100.);
1319 Form(
"%.2f<#eta^{probe}_{tk}<%.2f;(z_{trk}-z_{vtx})/#sigma_{res_{z}};tracks",etaF,etaL),
1320 mybins_,-dzmax_eta/100.,dzmax_eta/100.);
1325 Form(
"%.2f#circ<#varphi^{probe}_{tk}<%.2f#circ;d_{3D}/#sigma_{d_{3D}};tracks",phiF,phiL),
1326 mybins_,0.,d3Dmax_phi/100.);
1329 Form(
"%.2f<#eta^{probe}_{tk}<%.2f;d_{3D}/#sigma_{d_{3D}};tracks",etaF,etaL),
1330 mybins_,0.,d3Dmax_eta/100.);
1337 for (
int j=0; j<
nBins_; ++j ) {
1340 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{xy};tracks",etaF,etaL,phiF,phiL),
1341 mybins_,-dzmax_eta,dzmax_eta);
1344 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{z};tracks",etaF,etaL,phiF,phiL),
1345 mybins_,-dzmax_eta,dzmax_eta);
1348 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{3D};tracks",etaF,etaL,phiF,phiL),
1349 mybins_,0.,d3Dmax_eta);
1352 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{xy}/#sigma_{d_{xy}};tracks",etaF,etaL,phiF,phiL),
1353 mybins_,-dzmax_eta/100,dzmax_eta/100);
1356 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{z}/#sigma_{d_{z}};tracks",etaF,etaL,phiF,phiL),
1357 mybins_,-dzmax_eta/100,dzmax_eta/100);
1360 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{3D}/#sigma_{d_{3D}};tracks",etaF,etaL,phiF,phiL),
1361 mybins_,0.,d3Dmax_eta);
1370 a_dxyVsPhi = BiasVsParameter.make<TH2F>(
"h2_dxy_vs_phi",
"d_{xy} vs track #phi;track #phi [rad];track d_{xy}(PV) [#mum]",
1373 a_dzVsPhi = BiasVsParameter.make<TH2F>(
"h2_dz_vs_phi",
"d_{z} vs track #phi;track #phi [rad];track d_{z}(PV) [#mum]",
1376 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}}",
1379 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}}",
1382 a_dxyVsEta = BiasVsParameter.make<TH2F>(
"h2_dxy_vs_eta",
"d_{xy} vs track #eta;track #eta;track d_{xy}(PV) [#mum]",
1385 a_dzVsEta = BiasVsParameter.make<TH2F>(
"h2_dz_vs_eta",
"d_{z} vs track #eta;track #eta;track d_{z}(PV) [#mum]",
1388 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}}",
1391 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}}",
1402 Double_t highedge=nBins_-0.5;
1403 Double_t lowedge=-0.5;
1408 "#LT d_{xy} #GT vs #phi sector;#varphi (sector) [degrees];#LT d_{xy} #GT [#mum]",
1409 nBins_,lowedge,highedge);
1412 "#sigma_{d_{xy}} vs #phi sector;#varphi (sector) [degrees];#sigma_{d_{xy}} [#mum]",
1413 nBins_,lowedge,highedge);
1416 "#LT d_{z} #GT vs #phi sector;#varphi (sector) [degrees];#LT d_{z} #GT [#mum]",
1417 nBins_,lowedge,highedge);
1419 a_dzPhiWidthTrend = WidthTrendsDir.
make<TH1F>(
"widths_dz_phi",
"#sigma_{d_{z}} vs #phi sector;#varphi (sector) [degrees];#sigma_{d_{z}} [#mum]",
1420 nBins_,lowedge,highedge);
1423 "#LT d_{xy} #GT vs #eta sector;#eta (sector);#LT d_{xy} #GT [#mum]",
1424 nBins_,lowedge,highedge);
1427 "#sigma_{d_{xy}} vs #eta sector;#eta (sector);#sigma_{d_{xy}} [#mum]",
1428 nBins_,lowedge,highedge);
1431 "#LT d_{z} #GT vs #eta sector;#eta (sector);#LT d_{z} #GT [#mum]" 1432 ,
nBins_,lowedge,highedge);
1435 "#sigma_{d_{xy}} vs #eta sector;#eta (sector);#sigma_{d_{z}} [#mum]",
1436 nBins_,lowedge,highedge);
1439 "#LT d_{xy}/#sigma_{d_{xy}} #GT vs #phi sector;#varphi (sector) [degrees];#LT d_{xy}/#sigma_{d_{xy}} #GT",
1440 nBins_,lowedge,highedge);
1443 "width(d_{xy}/#sigma_{d_{xy}}) vs #phi sector;#varphi (sector) [degrees]; width(d_{xy}/#sigma_{d_{xy}})",
1444 nBins_,lowedge,highedge);
1447 "#LT d_{z}/#sigma_{d_{z}} #GT vs #phi sector;#varphi (sector) [degrees];#LT d_{z}/#sigma_{d_{z}} #GT",
1448 nBins_,lowedge,highedge);
1451 "width(d_{z}/#sigma_{d_{z}}) vs #phi sector;#varphi (sector) [degrees];width(d_{z}/#sigma_{d_{z}})",
1452 nBins_,lowedge,highedge);
1455 "#LT d_{xy}/#sigma_{d_{xy}} #GT vs #eta sector;#eta (sector);#LT d_{xy}/#sigma_{d_{z}} #GT",
1456 nBins_,lowedge,highedge);
1459 "width(d_{xy}/#sigma_{d_{xy}}) vs #eta sector;#eta (sector);width(d_{xy}/#sigma_{d_{z}})",
1460 nBins_,lowedge,highedge);
1463 "#LT d_{z}/#sigma_{d_{z}} #GT vs #eta sector;#eta (sector);#LT d_{z}/#sigma_{d_{z}} #GT",
1464 nBins_,lowedge,highedge);
1467 "width(d_{z}/#sigma_{d_{z}}) vs #eta sector;#eta (sector);width(d_{z}/#sigma_{d_{z}})",
1468 nBins_,lowedge,highedge);
1473 "#LT d_{xy} #GT map;#eta (sector);#varphi (sector) [degrees]",
1477 "#LT d_{z} #GT map;#eta (sector);#varphi (sector) [degrees]",
1481 "#LT d_{xy}/#sigma_{d_{xy}} #GT map;#eta (sector);#varphi (sector) [degrees]",
1485 "#LT d_{z}/#sigma_{d_{z}} #GT map;#eta (sector);#varphi (sector) [degrees]",
1489 "#sigma_{d_{xy}} map;#eta (sector);#varphi (sector) [degrees]",
1493 "#sigma_{d_{z}} map;#eta (sector);#varphi (sector) [degrees]",
1497 "width(d_{xy}/#sigma_{d_{xy}}) map;#eta (sector);#varphi (sector) [degrees]",
1501 "width(d_{z}/#sigma_{d_{z}}) map;#eta (sector);#varphi (sector) [degrees]",
1507 "Median of d_{xy} vs #phi sector;#varphi (sector) [degrees];#mu_{1/2}(d_{xy}) [#mum]",
1508 nBins_,lowedge,highedge);
1511 "Median absolute deviation of d_{xy} vs #phi sector;#varphi (sector) [degrees];MAD(d_{xy}) [#mum]",
1512 nBins_,lowedge,highedge);
1515 "Median of d_{z} vs #phi sector;#varphi (sector) [degrees];#mu_{1/2}(d_{z}) [#mum]",
1516 nBins_,lowedge,highedge);
1519 "Median absolute deviation of d_{z} vs #phi sector;#varphi (sector) [degrees];MAD(d_{z}) [#mum]",
1520 nBins_,lowedge,highedge);
1523 "Median of d_{xy} vs #eta sector;#eta (sector);#mu_{1/2}(d_{xy}) [#mum]",
1524 nBins_,lowedge,highedge);
1527 "Median absolute deviation of d_{xy} vs #eta sector;#eta (sector);MAD(d_{xy}) [#mum]",
1528 nBins_,lowedge,highedge);
1531 "Median of d_{z} vs #eta sector;#eta (sector);#mu_{1/2}(d_{z}) [#mum]",
1532 nBins_,lowedge,highedge);
1535 "Median absolute deviation of d_{z} vs #eta sector;#eta (sector);MAD(d_{z}) [#mum]",
1536 nBins_,lowedge,highedge);
1539 "Median of d_{xy}/#sigma_{d_{xy}} vs #phi sector;#varphi (sector) [degrees];#mu_{1/2}(d_{xy}/#sigma_{d_{xy}})",
1540 nBins_,lowedge,highedge);
1543 "Median absolute deviation of d_{xy}/#sigma_{d_{xy}} vs #phi sector;#varphi (sector) [degrees]; MAD(d_{xy}/#sigma_{d_{xy}})",
1544 nBins_,lowedge,highedge);
1547 "Median of d_{z}/#sigma_{d_{z}} vs #phi sector;#varphi (sector) [degrees];#mu_{1/2}(d_{z}/#sigma_{d_{z}})",
1548 nBins_,lowedge,highedge);
1551 "Median absolute deviation of d_{z}/#sigma_{d_{z}} vs #phi sector;#varphi (sector) [degrees];MAD(d_{z}/#sigma_{d_{z}})",
1552 nBins_,lowedge,highedge);
1555 "Median of d_{xy}/#sigma_{d_{xy}} vs #eta sector;#eta (sector);#mu_{1/2}(d_{xy}/#sigma_{d_{z}})",
1556 nBins_,lowedge,highedge);
1559 "Median absolute deviation of d_{xy}/#sigma_{d_{xy}} vs #eta sector;#eta (sector);MAD(d_{xy}/#sigma_{d_{z}})",
1560 nBins_,lowedge,highedge);
1563 "Median of d_{z}/#sigma_{d_{z}} vs #eta sector;#eta (sector);#mu_{1/2}(d_{z}/#sigma_{d_{z}})",
1564 nBins_,lowedge,highedge);
1567 "Median absolute deviation of d_{z}/#sigma_{d_{z}} vs #eta sector;#eta (sector);MAD(d_{z}/#sigma_{d_{z}})",
1568 nBins_,lowedge,highedge);
1601 float etaL=-etaOfProbe_+(
i+1)*etaSect_;
1604 Form(
"%.2f#circ<#varphi^{probe}_{tk}<%.2f#circ;d_{xy} [#mum];tracks",phiF,phiL),
1605 mybins_,-dxymax_phi,dxymax_phi);
1608 Form(
"%.2f<#eta^{probe}_{tk}<%.2f;d_{xy} [#mum];tracks",etaF,etaL),
1609 mybins_,-dxymax_eta,dxymax_eta);
1612 Form(
"%.2f#circ<#varphi^{probe}_{tk}<%.2f #circ;d_{z} [#mum];tracks",phiF,phiL),
1613 mybins_,-dzmax_phi,dzmax_phi);
1616 Form(
"%.2f<#eta^{probe}_{tk}<%.2f;d_{z} [#mum];tracks",etaF,etaL),
1617 mybins_,-dzmax_eta,dzmax_eta);
1620 Form(
"%.2f#circ<#varphi^{probe}_{tk}<%.2f#circ;d_{xy}/#sigma_{d_{xy}};tracks",phiF,phiL),
1621 mybins_,-dxymax_phi/100.,dxymax_phi/100.);
1624 Form(
"%.2f<#eta^{probe}_{tk}<%.2f;d_{xy}/#sigma_{d_{xy}};tracks",etaF,etaL),
1625 mybins_,-dxymax_eta/100.,dxymax_eta/100.);
1628 Form(
"%.2f#circ<#varphi^{probe}_{tk}<%.2f#circ;d_{z}/#sigma_{d_{z}};tracks",phiF,phiL),
1629 mybins_,-dzmax_phi/100.,dzmax_phi/100.);
1632 Form(
"%.2f<#eta^{probe}_{tk}<%.2f;d_{z}/#sigma_{d_{z}};tracks",etaF,etaL),
1633 mybins_,-dzmax_eta/100.,dzmax_eta/100.);
1635 for (
int j=0; j<
nBins_; ++j ) {
1638 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{xy} [#mum];tracks",etaF,etaL,phiF,phiL),
1639 mybins_,-dzmax_eta,dzmax_eta);
1642 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{z} [#mum];tracks",etaF,etaL,phiF,phiL),
1643 mybins_,-dzmax_eta,dzmax_eta);
1646 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{xy}/#sigma_{d_{xy}};tracks",etaF,etaL,phiF,phiL),
1647 mybins_,-dzmax_eta/100,dzmax_eta/100);
1650 Form(
"%.2f<#eta_{tk}<%.2f %.2f#circ<#varphi_{tk}<%.2f#circ;d_{z}/#sigma_{d_{z}};tracks",etaF,etaL,phiF,phiL),
1651 mybins_,-dzmax_eta/100,dzmax_eta/100);
1668 "#LT d_{xy} #GT vs #phi sector;#varphi (sector) [degrees];#LT d_{xy} #GT [#mum]",
1669 nBins_,lowedge,highedge);
1672 "#sigma_{d_{xy}} vs #phi sector;#varphi (sector) [degrees];#sigma_{d_{xy}} [#mum]",
1673 nBins_,lowedge,highedge);
1676 "#LT d_{z} #GT vs #phi sector;#varphi (sector) [degrees];#LT d_{z} #GT [#mum]",
1677 nBins_,lowedge,highedge);
1680 "#sigma_{d_{z}} vs #phi sector;#varphi (sector) [degrees];#sigma_{d_{z}} [#mum]",
1681 nBins_,lowedge,highedge);
1684 "#LT d_{xy} #GT vs #eta sector;#eta (sector);#LT d_{xy} #GT [#mum]",
1685 nBins_,lowedge,highedge);
1688 "#sigma_{d_{xy}} vs #eta sector;#eta (sector);#sigma_{d_{xy}} [#mum]",
1689 nBins_,lowedge,highedge);
1692 "#LT d_{z} #GT vs #eta sector;#eta (sector);#LT d_{z} #GT [#mum]",
1693 nBins_,lowedge,highedge);
1696 "#sigma_{d_{xy}} vs #eta sector;#eta (sector);#sigma_{d_{z}} [#mum]",
1697 nBins_,lowedge,highedge);
1700 "#LT d_{xy}/#sigma_{d_{xy}} #GT vs #phi sector;#varphi (sector) [degrees];#LT d_{xy}/#sigma_{d_{xy}} #GT",
1701 nBins_,lowedge,highedge);
1704 "width(d_{xy}/#sigma_{d_{xy}}) vs #phi sector;#varphi (sector) [degrees]; width(d_{xy}/#sigma_{d_{xy}})",
1705 nBins_,lowedge,highedge);
1708 "#LT d_{z}/#sigma_{d_{z}} #GT vs #phi sector;#varphi (sector) [degrees];#LT d_{z}/#sigma_{d_{z}} #GT",
1709 nBins_,lowedge,highedge);
1712 "width(d_{z}/#sigma_{d_{z}}) vs #phi sector;#varphi (sector) [degrees];width(d_{z}/#sigma_{d_{z}})",
1713 nBins_,lowedge,highedge);
1716 "#LT d_{xy}/#sigma_{d_{xy}} #GT vs #eta sector;#eta (sector);#LT d_{xy}/#sigma_{d_{z}} #GT",
1717 nBins_,lowedge,highedge);
1720 "width(d_{xy}/#sigma_{d_{xy}}) vs #eta sector;#eta (sector);width(d_{xy}/#sigma_{d_{z}})",
1721 nBins_,lowedge,highedge);
1724 "#LT d_{z}/#sigma_{d_{z}} #GT vs #eta sector;#eta (sector);#LT d_{z}/#sigma_{d_{z}} #GT",
1725 nBins_,lowedge,highedge);
1728 "width(d_{z}/#sigma_{d_{z}}) vs #eta sector;#eta (sector);width(d_{z}/#sigma_{d_{z}})",
1729 nBins_,lowedge,highedge);
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);
1838 <<
"######################################\n" 1839 <<
"# PrimaryVertexValidation::endJob()\n" 1840 <<
"# Number of analyzed events: "<<
Nevt_<<
"\n" 1841 <<
"######################################";
2038 Double_t median = 999;
2039 int nbins = histo->GetNbinsX();
2042 double *
x =
new double[
nbins];
2043 double *
y =
new double[
nbins];
2044 for (
int j = 0; j <
nbins; j++) {
2045 x[j] = histo->GetBinCenter(j+1);
2046 y[j] = histo->GetBinContent(j+1);
2048 median = TMath::Median(nbins, x, y);
2053 std::pair<Double_t,Double_t>
result;
2054 result = std::make_pair(median,median/TMath::Sqrt(histo->GetEntries()));
2065 int nbins = histo->GetNbinsX();
2066 Double_t median =
getMedian(histo).first;
2067 Double_t x_lastBin = histo->GetBinLowEdge(nbins+1);
2068 const char *
HistoName =histo->GetName();
2069 TString Finalname = Form(
"resMed%s",HistoName);
2070 TH1F *newHisto =
new TH1F(Finalname,Finalname,nbins,0.,x_lastBin);
2071 Double_t *residuals =
new Double_t[
nbins];
2074 for (
int j = 0; j <
nbins; j++) {
2075 residuals[j] =
TMath::Abs(median - histo->GetBinCenter(j+1));
2076 weights[j]=histo->GetBinContent(j+1);
2077 newHisto->Fill(residuals[j],weights[j]);
2080 Double_t theMAD = (
getMedian(newHisto).first)*1.4826;
2082 delete[] residuals; residuals=0;
2084 newHisto->Delete(
"");
2086 std::pair<Double_t,Double_t>
result;
2087 result = std::make_pair(theMAD,theMAD/histo->GetEntries());
2100 float mean = hist->GetMean();
2101 float sigma = hist->GetRMS();
2103 TF1
func(
"tmp",
"gaus", mean - 1.5*sigma, mean + 1.5*sigma);
2104 if (0 == hist->Fit(&func,
"QNR")) {
2105 mean = func.GetParameter(1);
2106 sigma = func.GetParameter(2);
2108 func.SetRange(mean - 2*sigma, mean + 2*sigma);
2111 if (0 == hist->Fit(&func,
"Q0LR")) {
2112 if (hist->GetFunction(func.GetName())) {
2113 hist->GetFunction(func.GetName())->ResetBit(TF1::kNotDraw);
2118 float res_mean = func.GetParameter(1);
2119 float res_width = func.GetParameter(2);
2121 float res_mean_err = func.GetParError(1);
2122 float res_width_err = func.GetParError(2);
2124 std::pair<Double_t,Double_t> resultM;
2125 std::pair<Double_t,Double_t> resultW;
2127 resultM = std::make_pair(res_mean,res_mean_err);
2128 resultW = std::make_pair(res_width,res_width_err);
2130 std::pair<std::pair<Double_t,Double_t>, std::pair<Double_t,Double_t> >
result;
2132 result = std::make_pair(resultM,resultW);
2143 char phipositionString[129];
2145 float phiposition = (-180+
i*phiInterval)+(phiInterval/2);
2146 sprintf(phipositionString,
"%.f",phiposition);
2148 char etapositionString[129];
2150 sprintf(etapositionString,
"%.1f",etaposition);
2152 if(fitPar_==
"mean"){
2154 float meanErr_ =
fitResiduals(residualsPlot[i]).first.second;
2155 trendPlot->SetBinContent(i+1,mean_);
2156 trendPlot->SetBinError(i+1,meanErr_);
2157 }
else if (fitPar_==
"width"){
2159 float widthErr_ =
fitResiduals(residualsPlot[i]).second.second;
2160 trendPlot->SetBinContent(i+1,width_);
2161 trendPlot->SetBinError(i+1,widthErr_);
2162 }
else if (fitPar_==
"median"){
2163 float median_ =
getMedian(residualsPlot[
i]).first;
2164 float medianErr_ =
getMedian(residualsPlot[i]).second;
2165 trendPlot->SetBinContent(i+1,median_);
2166 trendPlot->SetBinError(i+1,medianErr_);
2167 }
else if (fitPar_==
"mad"){
2168 float mad_ =
getMAD(residualsPlot[
i]).first;
2169 float madErr_ =
getMAD(residualsPlot[i]).second;
2170 trendPlot->SetBinContent(i+1,mad_);
2171 trendPlot->SetBinError(i+1,madErr_);
2173 std::cout<<
"PrimaryVertexValidation::fillTrendPlot() "<<fitPar_<<
" unknown estimator!"<<std::endl;
2177 trendPlot->GetXaxis()->SetBinLabel(
i+1,etapositionString);
2178 }
else if(var_==
"phi"){
2179 trendPlot->GetXaxis()->SetBinLabel(
i+1,phipositionString);
2181 std::cout<<
"PrimaryVertexValidation::fillTrendPlot() "<<var_<<
" unknown track parameter!"<<std::endl;
2193 char phipositionString[129];
2195 float phiposition = (-180+
i*phiInterval)+(phiInterval/2);
2196 sprintf(phipositionString,
"%.f",phiposition);
2198 trendMap->GetYaxis()->SetBinLabel(
i+1,phipositionString);
2200 for (
int j=0; j<
nBins_; ++j ) {
2202 char etapositionString[129];
2204 sprintf(etapositionString,
"%.1f",etaposition);
2206 if(
i==0) { trendMap->GetXaxis()->SetBinLabel(j+1,etapositionString); }
2208 if(fitPar_==
"mean"){
2209 float mean_ =
fitResiduals(residualsMapPlot[
i][j]).first.first;
2210 float meanErr_ =
fitResiduals(residualsMapPlot[
i][j]).first.second;
2211 trendMap->SetBinContent(j+1,
i+1,mean_);
2212 trendMap->SetBinError(j+1,
i+1,meanErr_);
2213 }
else if (fitPar_==
"width"){
2214 float width_ =
fitResiduals(residualsMapPlot[
i][j]).second.first;
2215 float widthErr_ =
fitResiduals(residualsMapPlot[
i][j]).second.second;
2216 trendMap->SetBinContent(j+1,
i+1,width_);
2217 trendMap->SetBinError(j+1,
i+1,widthErr_);
2218 }
else if (fitPar_==
"median"){
2219 float median_ =
getMedian(residualsMapPlot[
i][j]).first;
2220 float medianErr_ =
getMedian(residualsMapPlot[
i][j]).second;
2221 trendMap->SetBinContent(j+1,
i+1,median_);
2222 trendMap->SetBinError(j+1,
i+1,medianErr_);
2223 }
else if (fitPar_==
"mad"){
2224 float mad_ =
getMAD(residualsMapPlot[
i][j]).first;
2225 float madErr_ =
getMAD(residualsMapPlot[
i][j]).second;
2226 trendMap->SetBinContent(j+1,
i+1,mad_);
2227 trendMap->SetBinError(j+1,
i+1,madErr_);
2229 std::cout<<
"PrimaryVertexValidation::fillMap() "<<fitPar_<<
" unknown estimator!"<<std::endl;
2251 double vzErr =0.0, vxErr=0.0, vyErr=0.0;
2257 double dxy=0.0,
dz=0.0, dxysigma=0.0, dzsigma=0.0;
2258 dxy = track.
dxy(vtxPoint);
2259 dz = track.
dz(vtxPoint);
2264 if(fabs(dxy/dxysigma) > dxyErrMax_)
return false;
2265 if(fabs(
dz/dzsigma) > dzErrMax_)
return false;
2266 if(track.
ptError() / track.
pt() > ptErrMax_)
return false;
2277 TH1F::SetDefaultSumw2(kTRUE);
2279 std::map<std::string, TH1*>
h;
2283 for(
int t=0;
t<2;
t++){
2284 h[
"pseudorapidity_"+types[
t]] =dir.
make <TH1F>((
"rapidity_"+types[
t]).c_str(),
"track pseudorapidity; track #eta; tracks",100,-3., 3.);
2285 h[
"z0_"+types[
t]] = dir.
make<TH1F>((
"z0_"+types[
t]).c_str(),
"track z_{0};track z_{0} (cm);tracks",80,-40., 40.);
2286 h[
"phi_"+types[
t]] = dir.
make<TH1F>((
"phi_"+types[
t]).c_str(),
"track #phi; track #phi;tracks",80,-
TMath::Pi(),
TMath::Pi());
2287 h[
"eta_"+types[
t]] = dir.
make<TH1F>((
"eta_"+types[
t]).c_str(),
"track #eta; track #eta;tracks",80,-4., 4.);
2288 h[
"pt_"+types[
t]] = dir.
make<TH1F>((
"pt_"+types[
t]).c_str(),
"track p_{T}; track p_{T} [GeV];tracks",100,0., 20.);
2289 h[
"p_"+types[
t]] = dir.
make<TH1F>((
"p_"+types[
t]).c_str(),
"track p; track p [GeV];tracks",100,0., 20.);
2290 h[
"found_"+types[
t]] = dir.
make<TH1F>((
"found_"+types[
t]).c_str(),
"n. found hits;n^{found}_{hits};tracks",30, 0., 30.);
2291 h[
"lost_"+types[
t]] = dir.
make<TH1F>((
"lost_"+types[
t]).c_str(),
"n. lost hits;n^{lost}_{hits};tracks",20, 0., 20.);
2292 h[
"nchi2_"+types[
t]] = dir.
make<TH1F>((
"nchi2_"+types[
t]).c_str(),
"normalized track #chi^{2};track #chi^{2}/ndf;tracks",100, 0., 20.);
2293 h[
"rstart_"+types[
t]] = dir.
make<TH1F>((
"rstart_"+types[
t]).c_str(),
"track start radius; track innermost radius r (cm);tracks",100, 0., 20.);
2294 h[
"expectedInner_"+types[
t]] = dir.
make<TH1F>((
"expectedInner_"+types[
t]).c_str(),
"n. expected inner hits;n^{expected}_{inner};tracks",10, 0., 10.);
2295 h[
"expectedOuter_"+types[
t]] = dir.
make<TH1F>((
"expectedOuter_"+types[
t]).c_str(),
"n. expected outer hits;n^{expected}_{outer};tracks ",10, 0., 10.);
2296 h[
"logtresxy_"+types[
t]] = dir.
make<TH1F>((
"logtresxy_"+types[
t]).c_str(),
"log10(track r-#phi resolution/#mum);log10(track r-#phi resolution/#mum);tracks",100, 0., 5.);
2297 h[
"logtresz_"+types[
t]] = dir.
make<TH1F>((
"logtresz_"+types[
t]).c_str(),
"log10(track z resolution/#mum);log10(track z resolution/#mum);tracks",100, 0., 5.);
2298 h[
"tpullxy_"+types[
t]] = dir.
make<TH1F>((
"tpullxy_"+types[
t]).c_str(),
"track r-#phi pull;pull_{r-#phi};tracks",100, -10., 10.);
2299 h[
"tpullz_"+types[
t]] = dir.
make<TH1F>((
"tpullz_"+types[
t]).c_str(),
"track r-z pull;pull_{r-z};tracks",100, -50., 50.);
2300 h[
"tlogDCAxy_"+types[
t]] = dir.
make<TH1F>((
"tlogDCAxy_"+types[
t]).c_str(),
"track log_{10}(DCA_{r-#phi});track log_{10}(DCA_{r-#phi});tracks",200, -5., 3.);
2301 h[
"tlogDCAz_"+types[
t]] = dir.
make<TH1F>((
"tlogDCAz_"+types[
t]).c_str(),
"track log_{10}(DCA_{r-z});track log_{10}(DCA_{r-z});tracks",200, -5., 5.);
2302 h[
"lvseta_"+types[
t]] = dir.
make<TH2F>((
"lvseta_"+types[
t]).c_str(),
"cluster length vs #eta;track #eta;cluster length",60,-3., 3., 20, 0., 20);
2303 h[
"lvstanlambda_"+types[
t]] = dir.
make<TH2F>((
"lvstanlambda_"+types[
t]).c_str(),
"cluster length vs tan #lambda; tan#lambda;cluster length",60,-6., 6., 20, 0., 20);
2304 h[
"restrkz_"+types[
t]] = dir.
make<TH1F>((
"restrkz_"+types[
t]).c_str(),
"z-residuals (track vs vertex);res_{z} (cm);tracks", 200, -5., 5.);
2305 h[
"restrkzvsphi_"+types[
t]] = dir.
make<TH2F>((
"restrkzvsphi_"+types[
t]).c_str(),
"z-residuals (track - vertex) vs track #phi;track #phi;res_{z} (cm)", 12,-
TMath::Pi(),
TMath::Pi(),100, -0.5,0.5);
2306 h[
"restrkzvseta_"+types[
t]] = dir.
make<TH2F>((
"restrkzvseta_"+types[
t]).c_str(),
"z-residuals (track - vertex) vs track #eta;track #eta;res_{z} (cm)", 12,-3.,3.,200, -0.5,0.5);
2307 h[
"pulltrkzvsphi_"+types[
t]] = dir.
make<TH2F>((
"pulltrkzvsphi_"+types[
t]).c_str(),
"normalized z-residuals (track - vertex) vs track #phi;track #phi;res_{z}/#sigma_{res_{z}}", 12,-
TMath::Pi(),
TMath::Pi(),100, -5., 5.);
2308 h[
"pulltrkzvseta_"+types[
t]] = dir.
make<TH2F>((
"pulltrkzvseta_"+types[
t]).c_str(),
"normalized z-residuals (track - vertex) vs track #eta;track #eta;res_{z}/#sigma_{res_{z}}", 12,-3.,3.,100, -5., 5.);
2309 h[
"pulltrkz_"+types[
t]] = dir.
make<TH1F>((
"pulltrkz_"+types[
t]).c_str(),
"normalized z-residuals (track vs vertex);res_{z}/#sigma_{res_{z}};tracks", 100, -5., 5.);
2310 h[
"sigmatrkz0_"+types[
t]] = dir.
make<TH1F>((
"sigmatrkz0_"+types[
t]).c_str(),
"z-resolution (excluding beam);#sigma^{trk}_{z_{0}} (cm);tracks", 100, 0., 5.);
2311 h[
"sigmatrkz_"+types[
t]] = dir.
make<TH1F>((
"sigmatrkz_"+types[
t]).c_str(),
"z-resolution (including beam);#sigma^{trk}_{z} (cm);tracks", 100,0., 5.);
2312 h[
"nbarrelhits_"+types[
t]] = dir.
make<TH1F>((
"nbarrelhits_"+types[
t]).c_str(),
"number of pixel barrel hits;n. hits Barrel Pixel;tracks", 10, 0., 10.);
2313 h[
"nbarrelLayers_"+types[
t]] = dir.
make<TH1F>((
"nbarrelLayers_"+types[
t]).c_str(),
"number of pixel barrel layers;n. layers Barrel Pixel;tracks", 10, 0., 10.);
2314 h[
"nPxLayers_"+types[
t]] = dir.
make<TH1F>((
"nPxLayers_"+types[
t]).c_str(),
"number of pixel layers (barrel+endcap);n. Pixel layers;tracks", 10, 0., 10.);
2315 h[
"nSiLayers_"+types[
t]] = dir.
make<TH1F>((
"nSiLayers_"+types[
t]).c_str(),
"number of Tracker layers;n. Tracker layers;tracks", 20, 0., 20.);
2316 h[
"trackAlgo_"+types[
t]] = dir.
make<TH1F>((
"trackAlgo_"+types[
t]).c_str(),
"track algorithm;track algo;tracks", 30, 0., 30.);
2317 h[
"trackQuality_"+types[
t]] = dir.
make<TH1F>((
"trackQuality_"+types[
t]).c_str(),
"track quality;track quality;tracks", 7, -1., 6.);
2329 using namespace reco;
2346 fill(h,
"logtresxy_"+ttype,
log(d0Error/0.0001)/
log(10.));
2347 fill(h,
"tpullxy_"+ttype,d0/d0Error);
2348 fill(h,
"tlogDCAxy_"+ttype,
log(fabs(d0/d0Error)));
2354 fill(h,
"logtresz_"+ttype,
log(dzError/0.0001)/
log(10.));
2355 fill(h,
"tpullz_"+ttype,dz/dzError);
2356 fill(h,
"tlogDCAz_"+ttype,
log(fabs(dz/dzError)));
2387 double q=
sqrt(1.-2.*kappa*D0);
2390 if (fabs(kappa*s0)>0.001){
2412 int longesthit=0, nbarrel=0;
2414 if ((**hit).isValid() && (**hit).geographicalId().det() ==
DetId::Tracker ){
2422 if (clust->sizeY()-longesthit>0) longesthit=clust->sizeY();
2423 if (clust->sizeY()>20.){
2434 fill(h,
"nbarrelhits_"+ttype,
float(nbarrel));
2442 h[hist->GetName()]=
hist;
2443 hist->StatOverflows(kTRUE);
2452 std::cout <<
"Trying to fill non-exiting Histogram named " << s << std::endl;
2464 std::cout <<
"Trying to fill non-exiting Histogram named " << s << std::endl;
TH1F * n_dxyPhiMedianTrend
double qoverp() const
q / p
TH1F * n_dzPhiResiduals[nMaxBins_]
virtual char const * what() const
static const std::string kSharedResource
GlobalError positionError() const
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_d3DPhiResiduals[nMaxBins_]
TH1F * n_dzResidualsMap[nMaxBins_][nMaxBins_]
static uint32_t getLayer(uint16_t pattern)
double d0Error() const
error on d0
TH1F * a_dzPhiMedianBiasTrend
GlobalPoint position() const
TH1F * a_dxyEtaWidthBiasTrend
double longitudinalImpactParameterError() const
TH1F * a_IP3DEtaResiduals[nMaxBins_]
std::vector< unsigned int > runControlNumbers_
bool isNonnull() const
Checks for non-null.
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
TH1F * a_dxyEtaMADBiasTrend
TH1F * h_probesignIP2DRefitV_
trackRef_iterator tracks_end() const
last iterator over tracks
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)
int nhits1D_[nMaxtracks_]
const DetContainer & dets() const
Returm a vector of all GeomDet (including all GeomDetUnits)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
double zError() const
error on z
TH1F * n_IP2DPhiResiduals[nMaxBins_]
TrackFilterForPVFindingBase * theTrackFilter_
TH1F * a_dxyResidualsMap[nMaxBins_][nMaxBins_]
std::map< std::string, TH1 * > hDA
TrackQuality
track quality
TH1F * n_dxyEtaBiasResiduals[nMaxBins_]
const FreeTrajectoryState & theState() const
double theta() const
polar angle
#define DEFINE_FWK_MODULE(type)
bool isValid() const
Tells whether the vertex is valid.
PrimaryVertexValidation(const edm::ParameterSet &)
std::pair< Double_t, Double_t > getMAD(TH1F *histo)
Sin< T >::type sin(const T &t)
TH1F * a_dzEtaMADBiasTrend
TH1F * n_dxyBiasResidualsMap[nMaxBins_][nMaxBins_]
float totalChiSquared() const
const HitPattern & hitPattern() const
Global3DPoint GlobalPoint
reco::TransientTrack build(const reco::Track *p) const
TH1F * h_xErrOfflineVertex
double phi() const
azimuthal angle of momentum vector
float DOFUnbiasedVertex_[nMaxtracks_]
TH1F * a_dzPhiBiasResiduals[nMaxBins_]
TH1F * n_dzPhiWidthBiasTrend
bool passesTrackCuts(const reco::Track &track, const reco::Vertex &vertex, std::string qualityString_, double dxyErrMax_, double dzErrMax_, double ptErrMax_)
T * make(const Args &...args) const
make new ROOT object
double d3DFromMyVertex_[nMaxtracks_]
TH1F * n_dzEtaBiasResiduals[nMaxBins_]
virtual void analyze(const edm::Event &, const edm::EventSetup &)
double dxyBs_[nMaxtracks_]
double zPCA_[nMaxtracks_]
TH1F * a_dxyPhiWidthBiasTrend
float chi2ProbUnbiasedVertex_[nMaxtracks_]
double px() const
x coordinate of momentum vector
int pixelLayersWithMeasurement() const
double dxyFromMyVertex_[nMaxtracks_]
TH1F * a_dzPhiWidthBiasTrend
TH1F * h_probeRefitVSig3D_
int trackerLayersWithMeasurement() const
const Point & position() const
position
static bool pixelBarrelHitFilter(uint16_t pattern)
TrajectoryStateClosestToBeamLine stateAtBeamLine() const
int numberOfValidStripTOBHits() const
TH1F * h_probereszRefitV_
double dzErrorFromMyVertex_[nMaxtracks_]
TH1F * n_d3DEtaResiduals[nMaxBins_]
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)
TH1F * h_probeRefitVSigResZ_
TH1F * a_dxyPhiBiasResiduals[nMaxBins_]
double qoverp_[nMaxtracks_]
TH1F * a_d3DEtaResiduals[nMaxBins_]
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
std::pair< Double_t, Double_t > getMedian(TH1F *histo)
TH1F * a_dzEtaMedianTrend
double theta_[nMaxtracks_]
TH1F * a_dxyPhiMedianTrend
double longitudinalImpactParameter() const
void fillMap(TH2F *trendMap, TH1F *residualsMapPlot[100][100], TString fitPar_)
TH1F * a_IP2DEtaResiduals[nMaxBins_]
TH1F * a_dzPhiMeanBiasTrend
float normalisedChiSquared() const
const Point & vertex() const
reference point on the track. This method is DEPRECATED, please use referencePoint() instead ...
int tracksUsedForVertexing_[nMaxtracks_]
TH1F * h_fitVtxTrackAverageWeight_
TH1F * n_IP2DEtaResiduals[nMaxBins_]
int isGoodTrack_[nMaxtracks_]
double eta() const
pseudorapidity of momentum vector
std::pair< bool, bool > pixelHitsCheck(const reco::TransientTrack track)
TH1F * a_dxyPhiMADBiasTrend
unsigned int LuminosityBlockNumber_
TH1F * a_dxyPhiWidthTrend
int numberOfValidPixelBarrelHits() const
double zErrOfflineVertex_
TH1F * h_yErrOfflineVertex
const PerigeeTrajectoryParameters & perigeeParameters() const
int nhitsFPIX_[nMaxtracks_]
bool useTracksFromRecoVtx_
~PrimaryVertexValidation()
bool hasFirstLayerPixelHits(const reco::TransientTrack track)
TH1F * n_reszEtaResiduals[nMaxBins_]
double chi2() const
chi-squared of the fit
TH1F * n_dzPhiMADBiasTrend
TH1F * n_dzPhiBiasResiduals[nMaxBins_]
float degreesOfFreedom() const
double yUnbiasedVertex_[nMaxtracks_]
TH1F * h_probeRecoVSigXY_
virtual int dimension() const =0
std::pair< std::pair< Double_t, Double_t >, std::pair< Double_t, Double_t > > fitResiduals(TH1 *hist)
TH1F * h_probeRefitVLogSig3D_
TH1F * h_fitVtxTrackWeights_
GlobalPoint position() const
double pt() const
track transverse momentum
double transverseImpactParameter() const
TH1F * n_dxyEtaResiduals[nMaxBins_]
Cos< T >::type cos(const T &t)
TH1F * n_dxyPhiResiduals[nMaxBins_]
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
TH1F * n_IP3DEtaResiduals[nMaxBins_]
unsigned int EventNumber_
TH1F * a_dxPhiResiduals[nMaxBins_]
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_reszPhiResiduals[nMaxBins_]
TH1F * a_dzPhiMedianTrend
double BeamWidthX() const
beam width X
unsigned short numberOfValidHits() const
number of valid hits found
int numberOfValidStripTECHits() const
float chi2normUnbiasedVertex_[nMaxtracks_]
TH1F * n_d3DResidualsMap[nMaxBins_][nMaxBins_]
virtual CachingVertex< N > vertex(const std::vector< reco::TransientTrack > &tracks) const =0
T * make(const Args &...args) const
make new ROOT object
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
edm::EDGetTokenT< reco::VertexCollection > theVertexCollectionToken
TH1F * n_dzEtaWidthBiasTrend
TH1F * a_d3DResidualsMap[nMaxBins_][nMaxBins_]
TH1F * n_dzEtaMADBiasTrend
float trackWeight(const reco::TransientTrack &track) const
double IPLsigFromMyVertex_[nMaxtracks_]
double dzBs_[nMaxtracks_]
double yPCA_[nMaxtracks_]
double dxdz() const
dxdz slope
TH1F * a_dxyEtaWidthTrend
FTS const & trackStateAtPCA() const
double pz() const
z coordinate of momentum vector
TH1F * a_dyPhiResiduals[nMaxBins_]
virtual std::vector< std::vector< reco::TransientTrack > > clusterize(const std::vector< reco::TransientTrack > &tracks) const =0
TH1F * n_dzPhiMeanBiasTrend
TH1F * h_nOfflineVertices
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
double vz() const
z coordinate of the reference point on track
EventAuxiliary const & eventAuxiliary() const
TH1F * a_IP2DPhiResiduals[nMaxBins_]
GlobalPoint position() const
TH1F * n_dzPhiMedianBiasTrend
TH1F * a_dzPhiResiduals[nMaxBins_]
static TrackQuality qualityByName(const std::string &name)
double xError() const
error on x
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
TH1F * n_dzEtaMeanBiasTrend
const Track & track() const
bool hasTrackWeight() 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_]
XYZPointD XYZPoint
point in space with cartesian internal representation
double sigmaZ() const
sigma z
TH1F * n_dxyPhiBiasResiduals[nMaxBins_]
int pixelBarrelLayersWithMeasurement() const
int nhitsTEC_[nMaxtracks_]
double BeamWidthY() const
beam width Y
TrackClusterizerInZ * theTrackClusterizer_
double yErrOfflineVertex_
double xPCA_[nMaxtracks_]
double xUnbiasedVertex_[nMaxtracks_]
TH1F * a_dxyPhiResiduals[nMaxBins_]
TH1F * n_dxyPhiWidthTrend
virtual std::vector< reco::TransientTrack > select(const std::vector< reco::TransientTrack > &tracks) const =0
int numberOfValidStripTIBHits() const
bool quality(const TrackQuality) const
Track quality.
int numberOfValidPixelEndcapHits() const
TH1F * a_dxyEtaMeanBiasTrend
TH1F * a_dxyEtaBiasResiduals[nMaxBins_]
edm::EDGetTokenT< reco::BeamSpot > theBeamspotToken
edm::EDGetTokenT< reco::TrackCollection > theTrackCollectionToken
EventID const & id() const
TH1F * a_dzEtaMedianBiasTrend
Pixel cluster – collection of neighboring pixels above threshold.
double vy() const
y coordinate of the reference point on track
double dzFromMyVertex_[nMaxtracks_]
TH1F * n_IP3DPhiResiduals[nMaxBins_]
TH1F * n_dxyEtaWidthTrend
TH1F * a_dyEtaResiduals[nMaxBins_]
TH1F * a_dxyPhiMeanBiasTrend
static int position[264][3]
unsigned short found() const
Number of valid hits on track.
void add(std::map< std::string, TH1 * > &h, TH1 *hist)
TH1F * a_dzEtaResiduals[nMaxBins_]
TH1F * h_probeHitsInBPIX_
TH1F * h_recoVtxChi2Prob_
TH1F * h_probeHitsInFPIX_
TH1F * n_dxyEtaWidthBiasTrend
TH1F * n_d3DPhiResiduals[nMaxBins_]
void fill(std::map< std::string, TH1 * > &h, std::string s, double x)
TH1F * a_dxyEtaResiduals[nMaxBins_]
std::vector< TrackBaseRef >::const_iterator trackRef_iterator
The iteratator for the vector<TrackRef>
double y0() const
y coordinate
TH1F * a_reszEtaResiduals[nMaxBins_]
TH1F * a_dxyBiasResidualsMap[nMaxBins_][nMaxBins_]
TH1F * h_zErrOfflineVertex
TH1F * a_IP3DPhiResiduals[nMaxBins_]
int charge() const
track electric charge
const Point & position() const
position
TH1F * n_dxyResidualsMap[nMaxBins_][nMaxBins_]
static const G4double kappa
TH1F * n_dzPhiMedianTrend
double normalizedChi2() const
chi-squared divided by n.d.o.f.
double dxyErrorFromMyVertex_[nMaxtracks_]
DetId geographicalId() const
TH1F * n_dxyPhiWidthBiasTrend
trackRef_iterator tracks_begin() const
first iterator over tracks
TH1F * n_reszPhiResiduals[nMaxBins_]
uint16_t getHitPattern(HitCategory category, int position) const
float sumOfWeightsUnbiasedVertex_[nMaxtracks_]
TH1F * a_dxEtaResiduals[nMaxBins_]
TH1F * n_dzBiasResidualsMap[nMaxBins_][nMaxBins_]
double d3DErrorFromMyVertex_[nMaxtracks_]
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_dzEtaMedianBiasTrend
TH1F * a_dzBiasResidualsMap[nMaxBins_][nMaxBins_]
TH1F * a_dzEtaBiasResiduals[nMaxBins_]
TH1F * a_dxyEtaMedianTrend
void fillTrendPlot(TH1F *trendPlot, TH1F *residualsPlot[100], TString fitPar_, TString var_)
int hasRecVertex_[nMaxtracks_]
TH1F * a_dzResidualsMap[nMaxBins_][nMaxBins_]
TH1F * n_dzEtaResiduals[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_]
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
double py() const
y coordinate of momentum vector
TrackingRecHitCollection::base::const_iterator trackingRecHit_iterator
iterator over a vector of reference to TrackingRecHit in the same collection
double vx() const
x coordinate of the reference point on track
TH1F * n_dxyPhiMedianBiasTrend
TH1F * n_dxyPhiMeanBiasTrend
Global3DVector GlobalVector
int numberOfHits(HitCategory category) const
double chi2_[nMaxtracks_]
std::map< std::string, TH1 * > bookVertexHistograms(TFileDirectory dir)
int nhitsBPIX_[nMaxtracks_]
double x0() const
x coordinate
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.
double IP3DsigFromMyVertex_[nMaxtracks_]