1 #ifndef MuonTrackValidatorBase_h
2 #define MuonTrackValidatorBase_h
40 label(pset.getParameter< std::vector<edm::InputTag> >(
"label")),
41 usetracker(pset.getParameter<bool>(
"usetracker")),
42 usemuon(pset.getParameter<bool>(
"usemuon")),
43 bsSrc(pset.getParameter< edm::InputTag >(
"beamSpot")),
44 label_tp_effic(pset.getParameter< edm::InputTag >(
"label_tp_effic")),
45 label_tp_fake(pset.getParameter< edm::InputTag >(
"label_tp_fake")),
46 associators(pset.getParameter< std::vector<std::string> >(
"associators")),
47 out(pset.getParameter<std::string>(
"outputFile")),
49 min(pset.getParameter<double>(
"min")),
50 max(pset.getParameter<double>(
"max")),
51 nint(pset.getParameter<int>(
"nint")),
52 useFabs(pset.getParameter<bool>(
"useFabsEta")),
53 minpT(pset.getParameter<double>(
"minpT")),
54 maxpT(pset.getParameter<double>(
"maxpT")),
55 nintpT(pset.getParameter<int>(
"nintpT")),
56 minHit(pset.getParameter<double>(
"minHit")),
57 maxHit(pset.getParameter<double>(
"maxHit")),
58 nintHit(pset.getParameter<int>(
"nintHit")),
59 minPhi(pset.getParameter<double>(
"minPhi")),
60 maxPhi(pset.getParameter<double>(
"maxPhi")),
61 nintPhi(pset.getParameter<int>(
"nintPhi")),
62 minDxy(pset.getParameter<double>(
"minDxy")),
63 maxDxy(pset.getParameter<double>(
"maxDxy")),
64 nintDxy(pset.getParameter<int>(
"nintDxy")),
65 minDz(pset.getParameter<double>(
"minDz")),
66 maxDz(pset.getParameter<double>(
"maxDz")),
67 nintDz(pset.getParameter<int>(
"nintDz")),
68 minVertpos(pset.getParameter<double>(
"minVertpos")),
69 maxVertpos(pset.getParameter<double>(
"maxVertpos")),
71 minZpos(pset.getParameter<double>(
"minZpos")),
72 maxZpos(pset.getParameter<double>(
"maxZpos")),
73 nintZpos(pset.getParameter<int>(
"nintZpos")),
74 useInvPt(pset.getParameter<bool>(
"useInvPt")),
86 ptRes_nbin(pset.getParameter<int>(
"ptRes_nbin")),
90 dzRes_nbin(pset.getParameter<int>(
"dzRes_nbin")),
108 TProfile *
p1 = (TProfile*) th2->ProfileX();
112 throw cms::Exception(
"MuonTrackValidator") <<
"Different number of bins!";
131 for (
unsigned int j=0;
j<vec.size();
j++){
138 for (
unsigned int j=0;
j<numerator.size();
j++){
139 if (denominator[
j]!=0){
141 value = ((double) numerator[
j])/((double) denominator[j]);
142 else if (type==
"fakerate")
143 value = 1-((double) numerator[j])/((double) denominator[j]);
145 err =
sqrt( value*(1-value)/(
double) denominator[j] );
158 TAxis *axis = h->GetXaxis();
159 int bins = axis->GetNbins();
161 float from = axis->GetXmin();
162 float to = axis->GetXmax();
164 float *new_bins =
new float[bins + 1];
166 for (
int i = 0;
i <= bins;
i++) {
167 new_bins[
i] = TMath::Power(10, from +
i * width);
170 axis->Set(bins, new_bins);
175 std::vector<double> etaintervalsv;
176 std::vector<double> phiintervalsv;
177 std::vector<double> pTintervalsv;
178 std::vector<double> dxyintervalsv;
179 std::vector<double> dzintervalsv;
180 std::vector<double> vertposintervalsv;
181 std::vector<double> zposintervalsv;
182 std::vector<int> totSIMveta,totASSveta,totASS2veta,totRECveta;
183 std::vector<int> totSIMvpT,totASSvpT,totASS2vpT,totRECvpT;
184 std::vector<int> totSIMv_hit,totASSv_hit,totASS2v_hit,totRECv_hit;
185 std::vector<int> totSIMv_phi,totASSv_phi,totASS2v_phi,totRECv_phi;
186 std::vector<int> totSIMv_dxy,totASSv_dxy,totASS2v_dxy,totRECv_dxy;
187 std::vector<int> totSIMv_dz,totASSv_dz,totASS2v_dz,totRECv_dz;
188 std::vector<int> totSIMv_vertpos,totASSv_vertpos,totSIMv_zpos,totASSv_zpos;
191 std::vector<int> totASSveta_Quality05, totASSveta_Quality075;
192 std::vector<int> totASSvpT_Quality05, totASSvpT_Quality075;
193 std::vector<int> totASSv_phi_Quality05, totASSv_phi_Quality075;
197 etaintervalsv.push_back(
min);
200 etaintervalsv.push_back(d);
201 totSIMveta.push_back(0);
202 totASSveta.push_back(0);
203 totASS2veta.push_back(0);
204 totRECveta.push_back(0);
206 totASSveta_Quality05.push_back(0);
207 totASSveta_Quality075.push_back(0);
219 pTintervalsv.push_back(
minpT);
224 pTintervalsv.push_back(d);
225 totSIMvpT.push_back(0);
226 totASSvpT.push_back(0);
227 totASS2vpT.push_back(0);
228 totRECvpT.push_back(0);
230 totASSvpT_Quality05.push_back(0);
231 totASSvpT_Quality075.push_back(0);
243 totSIMv_hit.push_back(0);
244 totASSv_hit.push_back(0);
245 totASS2v_hit.push_back(0);
246 totRECv_hit.push_back(0);
254 phiintervalsv.push_back(
minPhi);
257 phiintervalsv.push_back(d);
258 totSIMv_phi.push_back(0);
259 totASSv_phi.push_back(0);
260 totASS2v_phi.push_back(0);
261 totRECv_phi.push_back(0);
263 totASSv_phi_Quality05.push_back(0);
264 totASSv_phi_Quality075.push_back(0);
276 dxyintervalsv.push_back(
minDxy);
279 dxyintervalsv.push_back(d);
280 totSIMv_dxy.push_back(0);
281 totASSv_dxy.push_back(0);
282 totASS2v_dxy.push_back(0);
283 totRECv_dxy.push_back(0);
293 dzintervalsv.push_back(
minDz);
296 dzintervalsv.push_back(d);
297 totSIMv_dz.push_back(0);
298 totASSv_dz.push_back(0);
299 totASS2v_dz.push_back(0);
300 totRECv_dz.push_back(0);
312 vertposintervalsv.push_back(d);
313 totSIMv_vertpos.push_back(0);
314 totASSv_vertpos.push_back(0);
321 zposintervalsv.push_back(
minZpos);
324 zposintervalsv.push_back(d);
325 totSIMv_zpos.push_back(0);
326 totASSv_zpos.push_back(0);
std::vector< MonitorElement * > h_assoc2phi
std::vector< MonitorElement * > h_recoeta
std::vector< MonitorElement * > nrecHit_vs_nsimHit_sim2rec
std::vector< MonitorElement * > h_DThits_eta
std::vector< MonitorElement * > h_assoc2hit
std::vector< std::vector< int > > totASS_zpos
std::vector< MonitorElement * > h_PurityVsQuality
std::vector< std::vector< int > > totASSeta_Quality05
std::vector< MonitorElement * > h_recopT
edm::ESHandle< MagneticField > theMF
void setBinContent(int binx, double content)
set content of bin (1-D)
std::vector< std::vector< int > > totREC_phi
double cotThetaRes_rangeMin
std::vector< MonitorElement * > h_assoc2dxy
std::vector< MonitorElement * > nrecHit_vs_nsimHit_rec2sim
std::vector< std::vector< int > > totASS2_hit
std::vector< MonitorElement * > h_fake_vs_phi
void fillPlotFromVectors(MonitorElement *h, std::vector< int > &numerator, std::vector< int > &denominator, std::string type)
std::vector< MonitorElement * > h_assocpT_Quality075
std::vector< std::vector< int > > totRECpT
std::vector< std::vector< int > > totREC_dz
std::vector< MonitorElement * > nrec_vs_nsim
std::vector< MonitorElement * > h_pullDz
std::vector< MonitorElement * > h_recohit
std::vector< MonitorElement * > h_etaSIM
bool ignoremissingtkcollection_
std::vector< MonitorElement * > h_assocvertpos
std::vector< MonitorElement * > h_fakes
virtual double getEta(double eta)
std::vector< MonitorElement * > h_eta
std::vector< std::vector< int > > totASS_dz
std::vector< std::vector< double > > etaintervals
std::vector< MonitorElement * > h_pt
std::vector< MonitorElement * > h_pullQoverp
std::string parametersDefiner
std::vector< MonitorElement * > h_effic_vs_dz
std::vector< std::vector< int > > totSIM_zpos
std::vector< MonitorElement * > h_CSChits_eta
std::vector< std::vector< int > > totASS2_dz
std::vector< std::vector< int > > totASS_phi_Quality05
double cotThetaRes_rangeMax
std::vector< MonitorElement * > h_assoceta
std::vector< MonitorElement * > h_tracks
std::vector< std::vector< double > > dxyintervals
std::vector< MonitorElement * > h_assoceta_Quality075
std::vector< MonitorElement * > nDThits_vs_eta
std::vector< std::vector< int > > totASS_phi
std::vector< MonitorElement * > h_effic_vs_zpos
std::vector< MonitorElement * > h_efficPt_Quality05
std::vector< std::vector< int > > totASS_dxy
std::vector< MonitorElement * > h_efficPt
std::vector< MonitorElement * > h_fakerate
std::vector< MonitorElement * > h_simuldxy
std::vector< std::vector< int > > totSIM_dxy
std::vector< MonitorElement * > h_simuldz
std::vector< std::vector< int > > totASSeta_Quality075
std::vector< MonitorElement * > nhits_vs_eta
virtual double getPt(double pt)
edm::InputTag label_tp_fake
std::vector< MonitorElement * > h_assoczpos
std::vector< MonitorElement * > h_simulphi
std::vector< std::vector< int > > totASS2pT
std::vector< MonitorElement * > h_vertposSIM
virtual void doProfileX(TH2 *th2, MonitorElement *me)
std::vector< edm::InputTag > label
std::vector< MonitorElement * > h_assocSharedHit
std::vector< std::vector< double > > pTintervals
std::vector< MonitorElement * > h_efficPt_Quality075
virtual ~MuonTrackValidatorBase()
Destructor.
std::vector< std::vector< int > > totASS2eta
std::vector< std::vector< int > > totSIMpT
std::vector< std::vector< int > > totREC_dxy
std::vector< MonitorElement * > h_assoc2dz
std::vector< MonitorElement * > h_pullPhi
std::vector< std::vector< int > > totSIM_hit
std::vector< MonitorElement * > h_effic_vs_phi_Quality05
std::vector< MonitorElement * > h_recophi
std::vector< std::vector< int > > totASSpT
std::vector< std::vector< int > > totASS_phi_Quality075
std::vector< MonitorElement * > h_effic_Quality05
std::vector< MonitorElement * > h_effic
std::vector< MonitorElement * > h_effic_vs_phi_Quality075
std::vector< MonitorElement * > h_pullTheta
std::vector< std::vector< int > > totSIM_vertpos
std::vector< std::vector< int > > totASSpT_Quality05
void setBinError(int binx, double error)
set uncertainty on content of bin (1-D)
std::vector< std::vector< int > > totREC_hit
std::vector< MonitorElement * > h_simulhit
std::vector< MonitorElement * > h_effic_vs_dxy
std::vector< std::vector< int > > totSIMeta
std::vector< std::vector< int > > totASS2_dxy
std::vector< MonitorElement * > h_charge
std::vector< MonitorElement * > h_effic_vs_phi
std::vector< MonitorElement * > h_assocphi
virtual void doProfileX(MonitorElement *th2m, MonitorElement *me)
std::vector< std::vector< int > > totASS2_phi
std::vector< std::vector< double > > phiintervals
edm::InputTag label_tp_effic
static std::string from(" from ")
std::vector< std::vector< int > > totASSpT_Quality075
std::vector< MonitorElement * > h_assocpT
std::vector< MonitorElement * > h_pullDxy
std::vector< MonitorElement * > h_simulpT
std::vector< MonitorElement * > h_tracksSIM
std::vector< MonitorElement * > h_assocphi_Quality05
std::vector< MonitorElement * > h_simulzpos
std::vector< MonitorElement * > h_recodz
std::vector< MonitorElement * > h_effic_Quality075
std::vector< MonitorElement * > h_assocphi_Quality075
std::vector< std::vector< int > > totSIM_phi
void fillPlotFromVector(MonitorElement *h, std::vector< int > &vec)
std::vector< MonitorElement * > h_hits_eta
std::vector< MonitorElement * > h_hits
std::vector< MonitorElement * > h_fake_vs_dz
std::vector< MonitorElement * > h_effic_vs_vertpos
std::vector< std::vector< int > > totASSeta
std::vector< MonitorElement * > h_simulvertpos
MuonTrackValidatorBase(const edm::ParameterSet &pset)
Constructor.
std::vector< const TrackAssociatorBase * > associator
TProfile * getTProfile(void) const
std::vector< std::vector< int > > totRECeta
std::vector< std::vector< double > > vertposintervals
std::vector< std::vector< double > > dzintervals
std::vector< MonitorElement * > h_recodxy
std::vector< MonitorElement * > h_ptSIM
int getNbinsX(void) const
get # of bins in X-axis
std::vector< MonitorElement * > h_assocdz
std::vector< std::vector< double > > zposintervals
std::vector< MonitorElement * > h_assocpT_Quality05
std::vector< MonitorElement * > h_RPChits_eta
std::vector< MonitorElement * > h_assoc2pT
std::vector< MonitorElement * > h_fake_vs_dxy
std::vector< MonitorElement * > h_assocFraction
TH2F * getTH2F(void) const
std::vector< std::vector< int > > totSIM_dz
std::vector< std::string > associators
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
std::vector< MonitorElement * > h_assoceta_Quality05
std::vector< MonitorElement * > h_assocdxy
std::vector< MonitorElement * > nRPChits_vs_eta
std::vector< std::vector< int > > totASS_vertpos
std::vector< MonitorElement * > h_assochit
Power< A, B >::type pow(const A &a, const B &b)
std::vector< std::vector< int > > totASS_hit
std::vector< MonitorElement * > h_fakeratePt
std::vector< MonitorElement * > nCSChits_vs_eta
std::vector< MonitorElement * > h_fake_vs_hit
std::vector< MonitorElement * > h_effic_vs_hit
std::vector< MonitorElement * > h_simuleta
std::vector< MonitorElement * > h_assoc2eta