1 #ifndef HeavyFlavorAnalysis_SpecificDecay_BPHWriteSpecificDecay_h 2 #define HeavyFlavorAnalysis_SpecificDecay_BPHWriteSpecificDecay_h 75 enum recoType {
Onia,
Pmm,
Psi1,
Psi2,
Ups,
Ups1,
Ups2,
Ups3,
Kx0,
Pkk,
Bu,
Bd,
Bs };
95 std::map<std::string, recoType>
rMap;
96 std::map<std::string, parType>
pMap;
97 std::map<std::string, parType>
fMap;
98 std::map<recoType, std::map<parType, double> >
parMap;
117 std::vector<BPHPlusMinusConstCandPtr>
lFull;
118 std::vector<BPHPlusMinusConstCandPtr>
lJPsi;
119 std::vector<BPHRecoConstCandPtr>
lSd;
120 std::vector<BPHRecoConstCandPtr>
lSs;
121 std::vector<BPHRecoConstCandPtr>
lBu;
122 std::vector<BPHRecoConstCandPtr>
lBd;
123 std::vector<BPHRecoConstCandPtr>
lBs;
125 std::map<const BPHRecoCandidate*, const BPHRecoCandidate*>
jPsiOMap;
127 std::map<const BPHRecoCandidate*, vertex_ref>
pvRefMap;
129 std::map<const BPHRecoCandidate*, compcc_ref>
ccRefMap;
135 const std::vector<T>&
list,
140 std::map<const BPHRecoCandidate*, const BPHRecoCandidate*>::const_iterator jpoIter;
141 std::map<const BPHRecoCandidate*, const BPHRecoCandidate*>::const_iterator jpoIend = jPsiOMap.end();
142 std::map<const BPHRecoCandidate*, vertex_ref>::const_iterator pvrIter;
143 std::map<const BPHRecoCandidate*, vertex_ref>::const_iterator pvrIend = pvRefMap.end();
144 std::map<const BPHRecoCandidate*, compcc_ref>::const_iterator ccrIter;
145 std::map<const BPHRecoCandidate*, compcc_ref>::const_iterator ccrIend = ccRefMap.end();
146 for (i = 0; i <
n; ++
i) {
147 const T& ptr = list[
i];
148 ccList->push_back(ptr->composite());
150 if ((pvrIter = pvRefMap.find(ptr.get())) != pvrIend)
152 const std::vector<std::string>& cNames = ptr->compNames();
154 int m = cNames.size();
158 if ((ccrIter = ccRefMap.find(cptr)) == ccrIend) {
159 if ((jpoIter = jPsiOMap.find(cptr)) != jpoIend)
160 cptr = jpoIter->second;
164 if ((ccrIter = ccRefMap.find(cptr)) != ccrIend) {
165 compcc_ref cref = ccrIter->second;
173 if (ptr->isEmpty()) {
180 if (ptr->isValidFit()) {
188 typedef std::unique_ptr<pat::CompositeCandidateCollection> ccc_pointer;
190 for (i = 0; i <
n; ++
i) {
193 ccRefMap[ptr] = ccRef;
Analysis-level particle class.
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
bool isNonnull() const
Checks for non-null.
BPHTokenWrapper< std::vector< reco::Vertex > > pVertexToken
std::vector< BPHPlusMinusConstCandPtr > lJPsi
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
edm::Ref< pat::CompositeCandidateCollection > compcc_ref
std::vector< BPHRecoConstCandPtr > lBs
BPHTokenWrapper< std::vector< BPHTrackReference::candidate > > pcCandsToken
void addUserFloat(const std::string &label, float data, const bool overwrite=false)
Set user-defined float.
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
virtual void fill(edm::Event &ev, const edm::EventSetup &es)
~BPHWriteSpecificDecay() override
ParticleMass mass() const
std::map< std::string, parType > pMap
std::vector< BPHRecoConstCandPtr > lSs
BPHWriteSpecificDecay(const edm::ParameterSet &ps)
BPHTokenWrapper< pat::MuonCollection > patMuonToken
BPHTokenWrapper< std::vector< reco::PFCandidate > > pfCandsToken
bool isCowboy() const
get cowboy/sailor classification
BPHTokenWrapper< std::vector< pat::CompositeCandidate > > ccCandsToken
std::vector< BPHRecoConstCandPtr > lSd
KinematicParameters const & kinematicParameters() 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)
std::map< const BPHRecoCandidate *, vertex_ref > pvRefMap
std::vector< BPHRecoConstCandPtr > lBu
virtual BPHRecoConstCandPtr getComp(const std::string &name) const
std::map< recoType, std::map< parType, double > > parMap
std::map< const BPHRecoCandidate *, const BPHRecoCandidate * > jPsiOMap
void produce(edm::Event &ev, const edm::EventSetup &es) override
std::vector< BPHRecoConstCandPtr > lBd
void setRecoParameters(const edm::ParameterSet &ps)
std::map< std::string, parType > fMap
void addUserData(const std::string &label, const T &data, bool transientOnly=false, bool overwrite=false)
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 list("!*","!HLTx*"if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL.It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of"!*"before the partial wildcard feature was incorporated).Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run
GlobalVector momentum() const