35 using namespace isodeposit;
46 std::vector<edm::EDGetTokenT<CandidateView> >
zTokens_;
51 std::vector<double>
ptThreshold_, etEcalThreshold_, etHcalThreshold_ ,dRVetoTrk_, dRTrk_, dREcal_ , dRHcal_, alpha_, beta_;
60 double isolation(
const T *
t,
double ptThreshold,
double etEcalThreshold,
double etHcalThreshold ,
double dRVetoTrk,
double dRTrk,
double dREcal ,
double dRHcal,
double alpha,
double beta,
bool relativeIsolation) {
74 vetosTrk.push_back(
new ConeVeto( dir, dRVetoTrk ));
78 vetosEcal.push_back(
new ConeVeto( dir, 0.));
82 vetosHcal.push_back(
new ConeVeto( dir, 0. ));
85 double isovalueTrk = (trkIso->
sumWithin(dRTrk,vetosTrk));
86 double isovalueEcal = (ecalIso->
sumWithin(dREcal,vetosEcal));
87 double isovalueHcal = (hcalIso->
sumWithin(dRHcal,vetosHcal));
90 double iso = alpha*( ((1+
beta)/2*isovalueEcal) + ((1-
beta)/2*isovalueHcal) ) + ((1-alpha)*isovalueTrk) ;
91 if(relativeIsolation) iso /= t->pt();
96 double candIsolation(
const reco::Candidate*
c,
double ptThreshold,
double etEcalThreshold,
double etHcalThreshold ,
double dRVetoTrk,
double dRTrk,
double dREcal ,
double dRHcal,
double alpha,
double beta,
bool relativeIsolation) {
98 if(mu != 0)
return isolation(mu, ptThreshold, etEcalThreshold, etHcalThreshold ,dRVetoTrk, dRTrk, dREcal , dRHcal, alpha, beta, relativeIsolation);
100 if(trk != 0)
return isolation(trk, ptThreshold, etEcalThreshold, etHcalThreshold ,dRVetoTrk, dRTrk, dREcal , dRHcal, alpha, beta, relativeIsolation);
102 <<
"Candidate daughter #0 is neither pat::Muons nor pat::GenericParticle\n";
110 vector<ParameterSet> psets = cfg.
getParameter<vector<ParameterSet> > (
"zBlocks" );
111 for( std::vector<edm::ParameterSet>::const_iterator
i = psets.begin();
i != psets.end(); ++
i ) {
112 string zName =
i->getParameter<
string>(
"zName" );
115 beamSpotToken_ = consumes<BeamSpot>(
i->getParameter<
InputTag>(
"beamSpot" ) );
116 primaryVerticesToken_= consumes<VertexCollection>(
i->getParameter<
InputTag>(
"primaryVertices" ) ) ;
117 double ptThreshold =
i->getParameter<
double>(
"ptThreshold");
118 double etEcalThreshold =
i->getParameter<
double>(
"etEcalThreshold");
119 double etHcalThreshold=
i->getParameter<
double>(
"etHcalThreshold");
120 double dRVetoTrk=
i->getParameter<
double>(
"deltaRVetoTrk");
121 double dRTrk=
i->getParameter<
double>(
"deltaRTrk");
122 double dREcal=
i->getParameter<
double>(
"deltaREcal");
123 double dRHcal=
i->getParameter<
double>(
"deltaRHcal");
124 double alpha=
i->getParameter<
double>(
"alpha");
125 double beta=
i->getParameter<
double>(
"beta");
126 bool relativeIsolation =
i->getParameter<
bool>(
"relativeIsolation");
127 string hltPath =
i ->getParameter<
std::string >(
"hltPath");
128 zName_.push_back( zName );
129 zTokens_.push_back( zToken );
130 zGenParticlesMatchTokens_.push_back( zGenParticlesMatchToken );
131 ptThreshold_.push_back( ptThreshold );
132 etEcalThreshold_.push_back(etEcalThreshold);
133 etHcalThreshold_.push_back(etHcalThreshold);
134 dRVetoTrk_.push_back(dRVetoTrk);
135 dRTrk_.push_back(dRTrk);
136 dREcal_.push_back(dREcal);
137 dRHcal_.push_back(dRHcal);
138 alpha_.push_back(alpha);
139 beta_.push_back(beta);
140 relativeIsolation_.push_back(relativeIsolation);
141 hltPath_.push_back(hltPath);
142 produces<vector<edm::EventNumber_t> >( alias = zName +
"EventNumber" ).setBranchAlias( alias );
143 produces<vector<unsigned int> >( alias = zName +
"RunNumber" ).setBranchAlias( alias );
144 produces<vector<unsigned int> >( alias = zName +
"LumiBlock" ).setBranchAlias( alias );
145 produces<vector<float> >( alias = zName +
"Mass" ).setBranchAlias( alias );
146 produces<vector<float> >( alias = zName +
"MassSa" ).setBranchAlias( alias );
147 produces<vector<float> >( alias = zName +
"Pt" ).setBranchAlias( alias );
148 produces<vector<float> >( alias = zName +
"Eta" ).setBranchAlias( alias );
149 produces<vector<float> >( alias = zName +
"Phi" ).setBranchAlias( alias );
150 produces<vector<float> >( alias = zName +
"Y" ).setBranchAlias( alias );
151 produces<vector<float> >( alias = zName +
"Dau1Pt" ).setBranchAlias( alias );
152 produces<vector<float> >( alias = zName +
"Dau2Pt" ).setBranchAlias( alias );
153 produces<vector<float> >( alias = zName +
"Dau1SaPt" ).setBranchAlias( alias );
154 produces<vector<float> >( alias = zName +
"Dau2SaPt" ).setBranchAlias( alias );
155 produces<vector<unsigned int> >( alias = zName +
"Dau1HLTBit" ).setBranchAlias( alias );
156 produces<vector<unsigned int> >( alias = zName +
"Dau2HLTBit" ).setBranchAlias( alias );
157 produces<vector<int> >( alias = zName +
"Dau1Q" ).setBranchAlias( alias );
158 produces<vector<int> >( alias = zName +
"Dau2Q" ).setBranchAlias( alias );
159 produces<vector<float> >( alias = zName +
"Dau1Eta" ).setBranchAlias( alias );
160 produces<vector<float> >( alias = zName +
"Dau2Eta" ).setBranchAlias( alias );
161 produces<vector<float> >( alias = zName +
"Dau1SaEta" ).setBranchAlias( alias );
162 produces<vector<float> >( alias = zName +
"Dau2SaEta" ).setBranchAlias( alias );
163 produces<vector<float> >( alias = zName +
"Dau1Phi" ).setBranchAlias( alias );
164 produces<vector<float> >( alias = zName +
"Dau2Phi" ).setBranchAlias( alias );
165 produces<vector<float> >( alias = zName +
"Dau1SaPhi" ).setBranchAlias( alias );
166 produces<vector<float> >( alias = zName +
"Dau2SaPhi" ).setBranchAlias( alias );
167 produces<vector<float> >( alias = zName +
"Dau1Iso" ).setBranchAlias( alias );
168 produces<vector<float> >( alias = zName +
"Dau2Iso" ).setBranchAlias( alias );
169 produces<vector<float> >( alias = zName +
"Dau1TrkIso" ).setBranchAlias( alias );
170 produces<vector<float> >( alias = zName +
"Dau2TrkIso" ).setBranchAlias( alias );
171 produces<vector<float> >( alias = zName +
"Dau1EcalIso" ).setBranchAlias( alias );
172 produces<vector<float> >( alias = zName +
"Dau2EcalIso" ).setBranchAlias( alias );
173 produces<vector<float> >( alias = zName +
"Dau1HcalIso" ).setBranchAlias( alias );
174 produces<vector<float> >( alias = zName +
"Dau2HcalIso" ).setBranchAlias( alias );
175 produces<vector<float> >( alias = zName +
"Dau1MuEnergyEm" ).setBranchAlias( alias );
176 produces<vector<float> >( alias = zName +
"Dau1MuEnergyHad" ).setBranchAlias( alias );
177 produces<vector<float> >( alias = zName +
"Dau2MuEnergyEm" ).setBranchAlias( alias );
178 produces<vector<float> >( alias = zName +
"Dau2MuEnergyHad" ).setBranchAlias( alias );
180 produces<vector<float> >( alias = zName +
"VtxNormChi2" ).setBranchAlias( alias );
181 produces<vector<unsigned int> >( alias = zName +
"Dau1NofHit" ).setBranchAlias( alias );
182 produces<vector<unsigned int> >( alias = zName +
"Dau2NofHit" ).setBranchAlias( alias );
183 produces<vector<unsigned int> >( alias = zName +
"Dau1NofHitTk" ).setBranchAlias( alias );
184 produces<vector<unsigned int> >( alias = zName +
"Dau1NofHitSta" ).setBranchAlias( alias );
185 produces<vector<unsigned int> >( alias = zName +
"Dau2NofHitTk" ).setBranchAlias( alias );
186 produces<vector<unsigned int> >( alias = zName +
"Dau2NofHitSta" ).setBranchAlias( alias );
187 produces<vector<unsigned int> >( alias = zName +
"Dau1NofMuChambers" ).setBranchAlias( alias );
188 produces<vector<unsigned int> >( alias = zName +
"Dau2NofMuChambers" ).setBranchAlias( alias );
189 produces<vector<unsigned int> >( alias = zName +
"Dau1NofMuMatches" ).setBranchAlias( alias );
190 produces<vector<unsigned int> >( alias = zName +
"Dau2NofMuMatches" ).setBranchAlias( alias );
191 produces<vector<float> >( alias = zName +
"Dau1Chi2" ).setBranchAlias( alias );
192 produces<vector<float> >( alias = zName +
"Dau2Chi2" ).setBranchAlias( alias );
193 produces<vector<float> >( alias = zName +
"Dau1TrkChi2" ).setBranchAlias( alias );
194 produces<vector<float> >( alias = zName +
"Dau2TrkChi2" ).setBranchAlias( alias );
195 produces<vector<float> >( alias = zName +
"Dau1dxyFromBS" ).setBranchAlias( alias );
196 produces<vector<float> >( alias = zName +
"Dau2dxyFromBS" ).setBranchAlias( alias );
197 produces<vector<float> >( alias = zName +
"Dau1dzFromBS" ).setBranchAlias( alias );
198 produces<vector<float> >( alias = zName +
"Dau2dzFromBS" ).setBranchAlias( alias );
199 produces<vector<float> >( alias = zName +
"Dau1dxyFromPV" ).setBranchAlias( alias );
200 produces<vector<float> >( alias = zName +
"Dau2dxyFromPV" ).setBranchAlias( alias );
201 produces<vector<float> >( alias = zName +
"Dau1dzFromPV" ).setBranchAlias( alias );
202 produces<vector<float> >( alias = zName +
"Dau2dzFromPV" ).setBranchAlias( alias );
203 produces<vector<float> >( alias = zName +
"TrueMass" ).setBranchAlias( alias );
204 produces<vector<float> >( alias = zName +
"TruePt" ).setBranchAlias( alias );
205 produces<vector<float> >( alias = zName +
"TrueEta" ).setBranchAlias( alias );
206 produces<vector<float> >( alias = zName +
"TruePhi" ).setBranchAlias( alias );
207 produces<vector<float> >( alias = zName +
"TrueY" ).setBranchAlias( alias );
215 if (!evt.
getByToken(beamSpotToken_, beamSpotHandle)) {
216 std::cout <<
">>> No beam spot found !!!"<<std::endl;
219 if (!evt.
getByToken(primaryVerticesToken_, primaryVertices)){
220 std::cout <<
">>> No primary verteces found !!!"<<std::endl;
223 unsigned int size = zTokens_.size();
224 for(
unsigned int c = 0;
c <
size; ++
c ) {
227 bool isMCMatchTrue =
false;
230 if (evt.
getByToken( zGenParticlesMatchTokens_[c], zGenParticlesMatch )) {
233 unsigned int zSize = zColl->size();
234 auto_ptr<vector<edm::EventNumber_t> >
event(
new vector<edm::EventNumber_t> );
235 auto_ptr<vector<unsigned int> >
run(
new vector<unsigned int> );
236 auto_ptr<vector<unsigned int> >
lumi(
new vector<unsigned int > );
237 auto_ptr<vector<float> > zMass(
new vector<float> );
238 auto_ptr<vector<float> > zMassSa(
new vector<float> );
239 auto_ptr<vector<float> > zPt(
new vector<float> );
240 auto_ptr<vector<float> > zEta(
new vector<float> );
241 auto_ptr<vector<float> > zPhi(
new vector<float> );
242 auto_ptr<vector<float> > zY(
new vector<float> );
243 auto_ptr<vector<float> > zDau1Pt(
new vector<float> );
244 auto_ptr<vector<float> > zDau2Pt(
new vector<float> );
245 auto_ptr<vector<float> > zDau1SaPt(
new vector<float> );
246 auto_ptr<vector<float> > zDau2SaPt(
new vector<float> );
247 auto_ptr<vector<unsigned int> > zDau1HLTBit(
new vector<unsigned int> );
248 auto_ptr<vector<unsigned int> > zDau2HLTBit(
new vector<unsigned int> );
249 auto_ptr<vector<int> > zDau1Q(
new vector<int> );
250 auto_ptr<vector<int> > zDau2Q(
new vector<int> );
251 auto_ptr<vector<float> > zDau1Eta(
new vector<float> );
252 auto_ptr<vector<float> > zDau2Eta(
new vector<float> );
253 auto_ptr<vector<float> > zDau1SaEta(
new vector<float> );
254 auto_ptr<vector<float> > zDau2SaEta(
new vector<float> );
255 auto_ptr<vector<float> > zDau1Phi(
new vector<float> );
256 auto_ptr<vector<float> > zDau2Phi(
new vector<float> );
257 auto_ptr<vector<float> > zDau1SaPhi(
new vector<float> );
258 auto_ptr<vector<float> > zDau2SaPhi(
new vector<float> );
259 auto_ptr<vector<float> > zDau1Iso(
new vector<float> );
260 auto_ptr<vector<float> > zDau2Iso(
new vector<float> );
261 auto_ptr<vector<float> > zDau1TrkIso(
new vector<float> );
262 auto_ptr<vector<float> > zDau2TrkIso(
new vector<float> );
263 auto_ptr<vector<float> > zDau1EcalIso(
new vector<float> );
264 auto_ptr<vector<float> > zDau2EcalIso(
new vector<float> );
265 auto_ptr<vector<float> > zDau1HcalIso(
new vector<float> );
266 auto_ptr<vector<float> > zDau2HcalIso(
new vector<float> );
267 auto_ptr<vector<float> > zDau1MuEnergyEm(
new vector<float> );
268 auto_ptr<vector<float> > zDau2MuEnergyEm(
new vector<float> );
269 auto_ptr<vector<float> > zDau1MuEnergyHad(
new vector<float> );
270 auto_ptr<vector<float> > zDau2MuEnergyHad(
new vector<float> );
271 auto_ptr<vector<float> > vtxNormChi2(
new vector<float> );
272 auto_ptr<vector<unsigned int> > zDau1NofHit(
new vector<unsigned int> );
273 auto_ptr<vector<unsigned int> > zDau2NofHit(
new vector<unsigned int> );
274 auto_ptr<vector<unsigned int> > zDau1NofHitTk(
new vector<unsigned int> );
275 auto_ptr<vector<unsigned int> > zDau2NofHitTk(
new vector<unsigned int> );
276 auto_ptr<vector<unsigned int> > zDau1NofHitSta(
new vector<unsigned int> );
277 auto_ptr<vector<unsigned int> > zDau2NofHitSta(
new vector<unsigned int> );
278 auto_ptr<vector<unsigned int> > zDau1NofMuChambers(
new vector<unsigned int> );
279 auto_ptr<vector<unsigned int> > zDau2NofMuChambers(
new vector<unsigned int> );
280 auto_ptr<vector<unsigned int> > zDau1NofMuMatches(
new vector<unsigned int> );
281 auto_ptr<vector<unsigned int> > zDau2NofMuMatches(
new vector<unsigned int> );
282 auto_ptr<vector<float> > zDau1Chi2(
new vector<float> );
283 auto_ptr<vector<float> > zDau2Chi2(
new vector<float> );
284 auto_ptr<vector<float> > zDau1TrkChi2(
new vector<float> );
285 auto_ptr<vector<float> > zDau2TrkChi2(
new vector<float> );
286 auto_ptr<vector<float> > zDau1dxyFromBS(
new vector<float> );
287 auto_ptr<vector<float> > zDau2dxyFromBS(
new vector<float> );
288 auto_ptr<vector<float> > zDau1dzFromBS(
new vector<float> );
289 auto_ptr<vector<float> > zDau2dzFromBS(
new vector<float> );
290 auto_ptr<vector<float> > zDau1dxyFromPV(
new vector<float> );
291 auto_ptr<vector<float> > zDau2dxyFromPV(
new vector<float> );
292 auto_ptr<vector<float> > zDau1dzFromPV(
new vector<float> );
293 auto_ptr<vector<float> > zDau2dzFromPV(
new vector<float> );
294 auto_ptr<vector<float> > trueZMass(
new vector<float> );
295 auto_ptr<vector<float> > trueZPt(
new vector<float> );
296 auto_ptr<vector<float> > trueZEta(
new vector<float> );
297 auto_ptr<vector<float> > trueZPhi(
new vector<float> );
298 auto_ptr<vector<float> > trueZY(
new vector<float> );
299 event -> push_back(evt.
id().
event());
300 run -> push_back(evt.
id().
run());
302 for(
unsigned int i = 0;
i < zSize; ++
i ) {
305 zMass->push_back( z.
mass() );
306 zPt->push_back( z.
pt() );
307 zEta->push_back( z.
eta() );
308 zPhi->push_back( z.
phi() );
313 zDau1Pt->push_back( dau1->
pt() );
314 zDau2Pt->push_back( dau2->
pt() );
315 zDau1Q->push_back( dau1->
charge() );
316 zDau2Q->push_back( dau2->
charge() );
317 zDau1Eta->push_back( dau1->
eta() );
318 zDau2Eta->push_back( dau2->
eta() );
319 zDau1Phi->push_back( dau1->
phi() );
320 zDau2Phi->push_back( dau2->
phi() );
323 <<
"Candidate daughters have no master clone\n";
326 const Candidate * m1 = &*mr1, * m2 = &*mr2;
329 double iso1 =
candIsolation(m1,ptThreshold_[c], etEcalThreshold_[c], etHcalThreshold_[c] ,dRVetoTrk_[c], dRTrk_[c], dREcal_[c] , dRHcal_[c], alpha_[c], beta_[c], relativeIsolation_[c]);
330 double iso2 =
candIsolation(m2,ptThreshold_[c], etEcalThreshold_[c], etHcalThreshold_[c] ,dRVetoTrk_[c], dRTrk_[c], dREcal_[c] , dRHcal_[c], alpha_[c], beta_[c], relativeIsolation_[c] );
332 double trkIso1 =
candIsolation(m1,ptThreshold_[c], etEcalThreshold_[c], etHcalThreshold_[c] ,dRVetoTrk_[c], dRTrk_[c], dREcal_[c] , dRHcal_[c], 0.0, beta_[c], relativeIsolation_[c]);
333 double trkIso2 =
candIsolation(m2,ptThreshold_[c], etEcalThreshold_[c], etHcalThreshold_[c] ,dRVetoTrk_[c], dRTrk_[c], dREcal_[c] , dRHcal_[c], 0.0, beta_[c], relativeIsolation_[c] );
335 double ecalIso1 =
candIsolation(m1,ptThreshold_[c], etEcalThreshold_[c], etHcalThreshold_[c] ,dRVetoTrk_[c], dRTrk_[c], dREcal_[c] , dRHcal_[c], 1.0, 1.0, relativeIsolation_[c]);
336 double ecalIso2 =
candIsolation(m2,ptThreshold_[c], etEcalThreshold_[c], etHcalThreshold_[c] ,dRVetoTrk_[c], dRTrk_[c], dREcal_[c] , dRHcal_[c], 1.0, 1.0, relativeIsolation_[c] );
338 double hcalIso1 =
candIsolation(m1,ptThreshold_[c], etEcalThreshold_[c], etHcalThreshold_[c] ,dRVetoTrk_[c], dRTrk_[c], dREcal_[c] , dRHcal_[c], 1.0, -1.0, relativeIsolation_[c]);
339 double hcalIso2 =
candIsolation(m2,ptThreshold_[c], etEcalThreshold_[c], etHcalThreshold_[c] ,dRVetoTrk_[c], dRTrk_[c], dREcal_[c] , dRHcal_[c], 1.0, -1.0, relativeIsolation_[c] );
341 zDau1Iso->push_back( iso1 );
342 zDau2Iso->push_back( iso2 );
343 zDau1TrkIso->push_back( trkIso1 );
344 zDau2TrkIso->push_back( trkIso2 );
345 zDau1EcalIso->push_back( ecalIso1 );
346 zDau2EcalIso->push_back( ecalIso2 );
347 zDau1HcalIso->push_back( hcalIso1 );
348 zDau2HcalIso->push_back( hcalIso2 );
354 trueZMass->push_back( z.
mass() );
355 trueZPt->push_back( z.
pt() );
356 trueZEta->push_back( z.
eta() );
357 trueZPhi->push_back( z.
phi() );
360 trueZMass->push_back( -100 );
361 trueZPt->push_back( -100 );
362 trueZEta->push_back( -100 );
363 trueZPhi->push_back( -100 );
364 trueZY->push_back( -100 );
372 zDau1NofHitTk->push_back(mu1->
innerTrack()->numberOfValidHits());
373 zDau1NofHitSta->push_back(mu1->
outerTrack()->numberOfValidHits());
374 zDau1Chi2->push_back(mu1->
normChi2());
376 zDau1TrkChi2->push_back( mu1TrkRef->normalizedChi2());
377 zDau1dxyFromBS->push_back(mu1TrkRef->dxy(beamSpotHandle->position()));
378 zDau1dzFromBS->push_back(mu1TrkRef->dz(beamSpotHandle->position()));
379 zDau1dxyFromPV->push_back(mu1TrkRef->dxy(primaryVertices->begin()->position() ));
380 zDau1dzFromPV->push_back(mu1TrkRef->dz(primaryVertices->begin()->position() ));
387 zDau1NofHit->push_back(mu1StaRef->numberOfValidHits());
388 zDau1NofHitTk->push_back(0);
389 zDau1NofHitSta->push_back(mu1StaRef->numberOfValidHits());
390 zDau1Chi2->push_back(mu1StaRef->normalizedChi2());
391 zDau1TrkChi2->push_back(0);
392 zDau1dxyFromBS->push_back(mu1StaRef->dxy(beamSpotHandle->position()));
393 zDau1dzFromBS->push_back(mu1StaRef->dz(beamSpotHandle->position()));
394 zDau1dxyFromPV->push_back(mu1StaRef->dxy(primaryVertices->begin()->position() ));
395 zDau1dzFromPV->push_back(mu1StaRef->dz(primaryVertices->begin()->position() ));
396 zDau1MuEnergyEm->push_back( -1);
397 zDau1MuEnergyHad->push_back( -1);
401 zDau1NofHit->push_back(mu1TrkRef->numberOfValidHits());
402 zDau1NofHitTk->push_back(mu1TrkRef->numberOfValidHits());
403 zDau1NofHitSta->push_back(0);
404 zDau1Chi2->push_back(mu1TrkRef->normalizedChi2());
405 zDau1TrkChi2->push_back(mu1TrkRef->normalizedChi2());
406 zDau1dxyFromBS->push_back(mu1TrkRef->dxy(beamSpotHandle->position()));
407 zDau1dzFromBS->push_back(mu1TrkRef->dz(beamSpotHandle->position()));
408 zDau1dxyFromPV->push_back(mu1TrkRef->dxy(primaryVertices->begin()->position() ));
409 zDau1dzFromPV->push_back(mu1TrkRef->dz(primaryVertices->begin()->position() ));
420 int dimTrig1 = mu1HLTMatches.size();
422 zDau1HLTBit->push_back(1);
424 zDau1HLTBit->push_back(0);
430 zDau2NofHitTk->push_back(mu2->
innerTrack()->numberOfValidHits());
431 zDau2NofHitSta->push_back(mu2->
outerTrack()->numberOfValidHits());
432 zDau2Chi2->push_back(mu2->
normChi2());
434 zDau1TrkChi2->push_back( mu2TrkRef->normalizedChi2());
435 zDau2dxyFromBS->push_back(mu2TrkRef->dxy(beamSpotHandle->position()));
436 zDau2dzFromBS->push_back(mu2TrkRef->dz(beamSpotHandle->position()));
437 zDau2dxyFromPV->push_back(mu2TrkRef->dxy(primaryVertices->begin()->position() ));
438 zDau2dzFromPV->push_back(mu2TrkRef->dz(primaryVertices->begin()->position() ));
443 zDau2HLTBit->push_back(0);
445 zDau2NofHit->push_back(mu2StaRef->numberOfValidHits());
446 zDau2NofHitTk->push_back(0);
447 zDau2NofHitSta->push_back(mu2StaRef->numberOfValidHits());
448 zDau2Chi2->push_back(mu2StaRef->normalizedChi2());
449 zDau2TrkChi2->push_back(0);
450 zDau2dxyFromBS->push_back(mu2StaRef->dxy(beamSpotHandle->position()));
451 zDau2dzFromBS->push_back(mu2StaRef->dz(beamSpotHandle->position()));
452 zDau2dxyFromPV->push_back(mu2StaRef->dxy(primaryVertices->begin()->position() ));
453 zDau2dzFromPV->push_back(mu2StaRef->dz(primaryVertices->begin()->position() ));
454 zDau1MuEnergyEm->push_back( -1);
455 zDau1MuEnergyHad->push_back( -1);
459 zDau2NofHit->push_back(mu2TrkRef->numberOfValidHits());
460 zDau2NofHitSta->push_back(0);
461 zDau2NofHitTk->push_back(mu2TrkRef->numberOfValidHits());
462 zDau2Chi2->push_back(mu2TrkRef->normalizedChi2());
463 zDau2TrkChi2->push_back(mu2TrkRef->normalizedChi2());
464 zDau2dxyFromBS->push_back(mu2TrkRef->dxy(beamSpotHandle->position()));
465 zDau2dzFromBS->push_back(mu2TrkRef->dz(beamSpotHandle->position()));
466 zDau2dxyFromPV->push_back(mu2TrkRef->dxy(primaryVertices->begin()->position() ));
467 zDau2dzFromPV->push_back(mu2TrkRef->dz(primaryVertices->begin()->position() ));
474 int dimTrig2 = mu2HLTMatches.size();
476 zDau2HLTBit->push_back(1);
479 zDau2HLTBit->push_back(0);
490 zDau1SaEta->push_back(stAloneTrack1->eta());
491 zDau2SaEta->push_back(stAloneTrack2->eta());
492 zDau1SaPhi->push_back(stAloneTrack1->phi());
493 zDau2SaPhi->push_back(stAloneTrack2->phi());
495 momentum = stAloneTrack1->momentum();
497 mu_mass = dau1->
mass();
499 zDau1SaPt->push_back(stAloneTrack1 ->
pt());
500 zDau2SaPt->push_back(- stAloneTrack2->pt());
502 momentum = stAloneTrack2->momentum();
504 mu_mass = dau2->
mass();
506 zDau1SaPt->push_back( - stAloneTrack1->pt());
507 zDau2SaPt->push_back( stAloneTrack2->pt());
512 zMassSa->push_back(mass);
524 zDau2NofHit->push_back(mu2TrkRef->numberOfValidHits());
525 zDau2NofHitTk->push_back( mu2TrkRef->numberOfValidHits());
526 zDau2NofHitSta->push_back( 0);
527 zDau2NofMuChambers->push_back(0);
528 zDau2NofMuMatches->push_back(0);
529 zDau2Chi2->push_back(mu2TrkRef->normalizedChi2());
530 zDau2dxyFromBS->push_back(mu2TrkRef->dxy(beamSpotHandle->position()));
531 zDau2dzFromBS->push_back(mu2TrkRef->dz(beamSpotHandle->position()));
532 zDau2dxyFromPV->push_back(mu2TrkRef->dxy(primaryVertices->begin()->position() ));
533 zDau2dzFromPV->push_back(mu2TrkRef->dz(primaryVertices->begin()->position() ));
534 zDau1MuEnergyEm->push_back( -1);
535 zDau1MuEnergyHad->push_back( -1);
538 const string & zName = zName_[
c];
539 evt.
put( event,zName +
"EventNumber" );
540 evt.
put( run, zName +
"RunNumber" );
541 evt.
put( lumi,zName +
"LumiBlock" );
542 evt.
put( zMass, zName +
"Mass" );
543 evt.
put( zMassSa, zName +
"MassSa" );
544 evt.
put( zPt, zName +
"Pt" );
545 evt.
put( zEta, zName +
"Eta" );
546 evt.
put( zPhi, zName +
"Phi" );
547 evt.
put( zY, zName +
"Y" );
548 evt.
put( zDau1Pt, zName +
"Dau1Pt" );
549 evt.
put( zDau2Pt, zName +
"Dau2Pt" );
550 evt.
put( zDau1SaPt, zName +
"Dau1SaPt" );
551 evt.
put( zDau2SaPt, zName +
"Dau2SaPt" );
552 evt.
put( zDau1HLTBit, zName +
"Dau1HLTBit" );
553 evt.
put( zDau2HLTBit, zName +
"Dau2HLTBit" );
554 evt.
put( zDau1Q, zName +
"Dau1Q" );
555 evt.
put( zDau2Q, zName +
"Dau2Q" );
556 evt.
put( zDau1Eta, zName +
"Dau1Eta" );
557 evt.
put( zDau2Eta, zName +
"Dau2Eta" );
558 evt.
put( zDau1SaEta, zName +
"Dau1SaEta" );
559 evt.
put( zDau2SaEta, zName +
"Dau2SaEta" );
560 evt.
put( zDau1Phi, zName +
"Dau1Phi" );
561 evt.
put( zDau2Phi, zName +
"Dau2Phi" );
562 evt.
put( zDau1SaPhi, zName +
"Dau1SaPhi" );
563 evt.
put( zDau2SaPhi, zName +
"Dau2SaPhi" );
564 evt.
put( zDau1Iso, zName +
"Dau1Iso" );
565 evt.
put( zDau2Iso, zName +
"Dau2Iso" );
566 evt.
put( zDau1TrkIso, zName +
"Dau1TrkIso" );
567 evt.
put( zDau2TrkIso, zName +
"Dau2TrkIso" );
568 evt.
put( zDau1EcalIso, zName +
"Dau1EcalIso" );
569 evt.
put( zDau2EcalIso, zName +
"Dau2EcalIso" );
570 evt.
put( zDau1HcalIso, zName +
"Dau1HcalIso" );
571 evt.
put( zDau2HcalIso, zName +
"Dau2HcalIso" );
572 evt.
put( zDau1MuEnergyEm, zName +
"Dau1MuEnergyEm" );
573 evt.
put( zDau2MuEnergyEm, zName +
"Dau2MuEnergyEm" );
574 evt.
put( zDau1MuEnergyHad, zName +
"Dau1MuEnergyHad" );
575 evt.
put( zDau2MuEnergyHad, zName +
"Dau2MuEnergyHad" );
576 evt.
put( vtxNormChi2, zName +
"VtxNormChi2" );
577 evt.
put( zDau1NofHit, zName +
"Dau1NofHit" );
578 evt.
put( zDau2NofHit, zName +
"Dau2NofHit" );
579 evt.
put( zDau1NofHitTk, zName +
"Dau1NofHitTk" );
580 evt.
put( zDau2NofHitTk, zName +
"Dau2NofHitTk" );
581 evt.
put( zDau1NofHitSta, zName +
"Dau1NofHitSta" );
582 evt.
put( zDau2NofHitSta, zName +
"Dau2NofHitSta" );
583 evt.
put( zDau1NofMuChambers, zName +
"Dau1NofMuChambers" );
584 evt.
put( zDau1NofMuMatches, zName +
"Dau1NofMuMatches" );
585 evt.
put( zDau2NofMuChambers, zName +
"Dau2NofMuChambers" );
586 evt.
put( zDau2NofMuMatches, zName +
"Dau2NofMuMatches" );
587 evt.
put( zDau1Chi2, zName +
"Dau1Chi2" );
588 evt.
put( zDau2Chi2, zName +
"Dau2Chi2" );
589 evt.
put( zDau1TrkChi2, zName +
"Dau1TrkChi2" );
590 evt.
put( zDau2TrkChi2, zName +
"Dau2TrkChi2" );
591 evt.
put( zDau1dxyFromBS, zName +
"Dau1dxyFromBS" );
592 evt.
put( zDau2dxyFromBS, zName +
"Dau2dxyFromBS" );
593 evt.
put( zDau1dxyFromPV, zName +
"Dau1dxyFromPV" );
594 evt.
put( zDau2dxyFromPV, zName +
"Dau2dxyFromPV" );
595 evt.
put( zDau1dzFromBS, zName +
"Dau1dzFromBS" );
596 evt.
put( zDau2dzFromBS, zName +
"Dau2dzFromBS" );
597 evt.
put( zDau1dzFromPV, zName +
"Dau1dzFromPV" );
598 evt.
put( zDau2dzFromPV, zName +
"Dau2dzFromPV" );
599 evt.
put( trueZMass, zName +
"TrueMass" );
600 evt.
put( trueZPt, zName +
"TruePt" );
601 evt.
put( trueZEta, zName +
"TrueEta" );
602 evt.
put( trueZPhi, zName +
"TruePhi" );
603 evt.
put( trueZY, zName +
"TrueY" );
std::vector< std::string > zName_
T getParameter(std::string const &) const
EventNumber_t event() const
reco::TrackRef innerTrack() const
reference to Track reconstructed in the tracker only (reimplemented from reco::Muon) ...
virtual const Candidate * daughter(size_type i) const =0
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
bool isNonnull() const
Checks for non-null.
edm::EDGetTokenT< VertexCollection > primaryVerticesToken_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
virtual double pt() const =0
transverse momentum
edm::EDGetTokenT< BeamSpot > beamSpotToken_
#define DEFINE_FWK_MODULE(type)
bool isTrackerMuon() const
std::vector< double > ptThreshold_
virtual double mass() const =0
mass
void produce(edm::Event &, const edm::EventSetup &) override
stand alone muon component tag
bool isGlobalMuon() const
edm::LuminosityBlockNumber_t luminosityBlock() const
virtual double rapidity() const =0
rapidity
std::vector< TriggerObjectStandAlone > TriggerObjectStandAloneCollection
Collection of TriggerObjectStandAlone.
bool isStandAloneMuon() const
reco::TrackRef outerTrack() const
reference to Track reconstructed in the muon detector only (reimplemented from reco::Muon) ...
virtual const PolarLorentzVector & polarP4() const =0
four-momentum Lorentz vector
double sumWithin(double coneSize, const AbsVetos &vetos=AbsVetos(), bool skipDepositVeto=false) const
std::vector< edm::EDGetTokenT< GenParticleMatch > > zGenParticlesMatchTokens_
Analysis-level Generic Particle class (e.g. for hadron or muon not fully reconstructed) ...
virtual bool hasMasterClone() const =0
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
ZToLLEdmNtupleDumper(const edm::ParameterSet &)
virtual int charge() const =0
electric charge
virtual reco::TrackRef track() const
const TriggerObjectStandAloneCollection triggerObjectMatchesByPath(const std::string &namePath, const bool pathLastFilterAccepted=false, const bool pathL3FilterAccepted=true) const
double candIsolation(const reco::Candidate *c, double ptThreshold, double etEcalThreshold, double etHcalThreshold, double dRVetoTrk, double dRTrk, double dREcal, double dRHcal, double alpha, double beta, bool relativeIsolation)
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
virtual double vertexNormalizedChi2() const =0
chi-squared divided by n.d.o.f.
MuonEnergy calEnergy() const
get energy deposition information
std::vector< string > hltPath_
std::vector< double > relativeIsolation_
XYZVectorD XYZVector
spatial vector with cartesian internal representation
int numberOfChambers() const
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
int numberOfMatches(ArbitrationType type=SegmentAndTrackArbitration) const
get number of chambers with matched segments
static std::atomic< unsigned int > counter
T get() const
get a component
std::vector< edm::EDGetTokenT< CandidateView > > zTokens_
unsigned int numberOfValidHits() const
numberOfValidHits returns the number of valid hits on the global track.
isodeposit::AbsVetos AbsVetos
double normChi2() const
Norm chi2 gives the normalized chi2 of the global track.
Analysis-level muon class.
tuple size
Write out results.
virtual double phi() const =0
momentum azimuthal angle
virtual double eta() const =0
momentum pseudorapidity
virtual const CandidateBaseRef & masterClone() const =0
math::PtEtaPhiMLorentzVector PolarLorentzVector
Lorentz vector.