1 #ifndef HeavyFlavorAnalysis_SpecificDecay_BPHWriteSpecificDecay_h 2 #define HeavyFlavorAnalysis_SpecificDecay_BPHWriteSpecificDecay_h 150 std::map<std::string, recoType>
rMap;
151 std::map<std::string, parType>
pMap;
152 std::map<std::string, parType>
fMap;
153 std::map<recoType, std::map<parType, double> >
parMap;
193 std::vector<BPHPlusMinusConstCandPtr>
lFull;
194 std::vector<BPHPlusMinusConstCandPtr>
lJPsi;
195 std::vector<BPHRecoConstCandPtr>
lSd;
196 std::vector<BPHRecoConstCandPtr>
lSs;
197 std::vector<BPHRecoConstCandPtr>
lBu;
198 std::vector<BPHRecoConstCandPtr>
lBp;
199 std::vector<BPHRecoConstCandPtr>
lBd;
200 std::vector<BPHRecoConstCandPtr>
lBs;
201 std::vector<BPHPlusMinusConstCandPtr>
lK0;
202 std::vector<BPHPlusMinusConstCandPtr>
lL0;
203 std::vector<BPHRecoConstCandPtr>
lB0;
204 std::vector<BPHRecoConstCandPtr>
lLb;
205 std::vector<BPHRecoConstCandPtr>
lBc;
209 std::map<const BPHRecoCandidate*, const BPHRecoCandidate*>
jPsiOMap;
210 std::map<const BPHRecoCandidate*, const BPHRecoCandidate*>
daughMap;
212 std::map<const BPHRecoCandidate*, vertex_ref>
pvRefMap;
214 std::map<const BPHRecoCandidate*, compcc_ref>
ccRefMap;
224 const std::vector<T>& list,
229 std::map<const BPHRecoCandidate*, const BPHRecoCandidate*>::const_iterator dauIter;
230 std::map<const BPHRecoCandidate*, const BPHRecoCandidate*>::const_iterator dauIend =
daughMap.end();
231 std::map<const BPHRecoCandidate*, const BPHRecoCandidate*>::const_iterator jpoIter;
232 std::map<const BPHRecoCandidate*, const BPHRecoCandidate*>::const_iterator jpoIend =
jPsiOMap.end();
233 std::map<const BPHRecoCandidate*, vertex_ref>::const_iterator pvrIter;
234 std::map<const BPHRecoCandidate*, vertex_ref>::const_iterator pvrIend =
pvRefMap.end();
235 std::map<const BPHRecoCandidate*, compcc_ref>::const_iterator ccrIter;
236 std::map<const BPHRecoCandidate*, compcc_ref>::const_iterator ccrIend =
ccRefMap.end();
237 for (
i = 0;
i <
n; ++
i) {
238 const T& ptr = list[
i];
239 ccList->push_back(ptr->composite());
244 cc.addUserData(
"trackModes", modes,
true);
246 if ((pvrIter =
pvRefMap.find(ptr.get())) != pvrIend)
247 cc.addUserData(
"primaryVertex", pvrIter->second);
248 const std::vector<std::string>& cNames = ptr->compNames();
250 int m = cNames.size();
254 if ((ccrIter =
ccRefMap.find(cptr)) == ccrIend) {
255 if ((dauIter =
daughMap.find(cptr)) != dauIend)
256 cptr = dauIter->second;
257 if ((jpoIter =
jPsiOMap.find(cptr)) != jpoIend)
258 cptr = jpoIter->second;
260 if ((ccrIter =
ccRefMap.find(cptr)) != ccrIend) {
263 cc.addUserData(
"refTo" + compName, cref);
267 if (pmp !=
nullptr) {
268 cc.addUserInt(
"cowboy", (pmp->
isCowboy() ? +1 : -1));
272 cc.addUserData(
"vertex", ptr->vertex());
276 cc.addUserData(
"fitVertex",
reco::Vertex(*ptr->topDecayVertex()));
277 if (ptr->isValidFit()) {
280 cc.addUserFloat(
"fitMass", kinStat.
mass());
285 typedef std::unique_ptr<pat::CompositeCandidateCollection> ccc_pointer;
287 for (
i = 0;
i <
n; ++
i) {
BPHTokenWrapper< std::vector< reco::VertexCompositeCandidate > > l0CandsToken
Analysis-level particle class.
BPHTokenWrapper< std::vector< reco::Vertex > > pVertexToken
std::vector< BPHPlusMinusConstCandPtr > lJPsi
BPHTokenWrapper< std::vector< reco::VertexCompositePtrCandidate > > kSCandsToken
std::vector< BPHPlusMinusConstCandPtr > lK0
edm::Ref< std::vector< reco::Vertex > > vertex_ref
std::map< const BPHRecoCandidate *, compcc_ref > ccRefMap
std::vector< BPHPlusMinusConstCandPtr > lFull
std::map< std::string, recoType > rMap
uint32_t cc[maxCellsPerHit]
edm::Ref< pat::CompositeCandidateCollection > compcc_ref
std::vector< BPHRecoConstCandPtr > lBs
std::vector< BPHRecoConstCandPtr > lBp
BPHTokenWrapper< std::vector< BPHTrackReference::candidate > > pcCandsToken
bool isNonnull() const
Checks for non-null.
BPHESTokenWrapper< TransientTrackBuilder, TransientTrackRecord > ttBToken
BPHESTokenWrapper< MagneticField, IdealMagneticFieldRecord > magFieldToken
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
bool isCowboy() const
get cowboy/sailor classification
std::map< const BPHRecoCandidate *, const BPHRecoCandidate * > daughMap
std::map< std::string, parType > pMap
std::vector< BPHRecoConstCandPtr > lSs
BPHTokenWrapper< std::vector< reco::VertexCompositeCandidate > > k0CandsToken
BPHWriteSpecificDecay(const edm::ParameterSet &ps)
BPHTokenWrapper< pat::MuonCollection > patMuonToken
GlobalVector momentum() const
BPHTokenWrapper< std::vector< reco::PFCandidate > > pfCandsToken
KinematicParameters const & kinematicParameters() const
BPHTokenWrapper< std::vector< reco::VertexCompositePtrCandidate > > lSCandsToken
BPHTokenWrapper< std::vector< pat::CompositeCandidate > > ccCandsToken
std::vector< BPHRecoConstCandPtr > lSd
~BPHWriteSpecificDecay() override=default
virtual BPHRecoConstCandPtr getComp(const std::string &name) const
BPHTokenWrapper< std::vector< pat::GenericParticle > > gpCandsToken
std::vector< CompositeCandidate > CompositeCandidateCollection
edm::OrphanHandle< pat::CompositeCandidateCollection > write(edm::Event &ev, const std::vector< T > &list, const std::string &name)
virtual void fill(edm::Event &ev, const BPHEventSetupWrapper &es)
std::map< const BPHRecoCandidate *, vertex_ref > pvRefMap
std::vector< BPHPlusMinusConstCandPtr > lL0
std::vector< BPHRecoConstCandPtr > lBu
std::vector< BPHRecoConstCandPtr > lLb
std::map< recoType, std::map< parType, double > > parMap
std::vector< BPHRecoConstCandPtr > lPsi2S
ParticleMass mass() const
std::map< const BPHRecoCandidate *, const BPHRecoCandidate * > jPsiOMap
std::vector< BPHRecoConstCandPtr > lB0
std::vector< BPHRecoConstCandPtr > lBc
std::vector< BPHRecoConstCandPtr > lX3872
void produce(edm::Event &ev, const edm::EventSetup &es) override
static void addTrackModes(const std::string &name, const BPHRecoCandidate &cand, std::string &modes, bool &count)
std::vector< BPHRecoConstCandPtr > lBd
void setRecoParameters(const edm::ParameterSet &ps)
std::map< std::string, parType > fMap