Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions AnalysisFW/interface/QCDEvent.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ class QCDEvent

void setGenFlavour(const std::vector<float> GenFlavour){ genFlavour_= GenFlavour; }
void setGenHadronFlavour(const std::vector<float> GenFlavourHadron){ genFlavourHadron_= GenFlavourHadron; }
void setGenFlavourPhysicsDef(const std::vector<float> GenPartonFlavourPhysicsDef){ genFlavourPartonPhysicsDef_= GenPartonFlavourPhysicsDef; }

//------------ Get methods -------------------------------
unsigned int nTriggers() const {return TriggerDecision_.size();}
Expand All @@ -63,6 +64,7 @@ class QCDEvent

float GenJetFlavour(int i) const {return genFlavour_[i];}
float GenHadronJetFlavour(int i) const {return genFlavourHadron_[i];}
float GenPartonPhysicsDefJetFlavour(int i) const {return genFlavourPartonPhysicsDef_[i];}

float calomjj();
float genmjj();
Expand Down Expand Up @@ -128,6 +130,7 @@ class QCDEvent
//std::vector<QCDJet> FatJets_;
std::vector<float> genFlavour_;
std::vector<float> genFlavourHadron_;
std::vector<float> genFlavourPartonPhysicsDef_;

//MyMuons
//std::vector<MyMuon> mMuon_;
Expand Down
4 changes: 3 additions & 1 deletion AnalysisFW/interface/QCDPFJetBTag.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class QCDPFJetBTag : public QCDJet {
DeepCSVccP_ = DeepCSVccP;}


void setFlavour(float fpartonflavour, float fhadronflavour) {partonFlavour_ = fpartonflavour; hadronFlavour_ = fhadronflavour;}
void setFlavour(float fpartonflavour, float fhadronflavour, float fpartonflavourPhysicsDef) {partonFlavour_ = fpartonflavour; hadronFlavour_ = fhadronflavour; partonFlavourPhysicsDef_ = fpartonflavourPhysicsDef;}

void setQGTagger(float fQGTagger) {QGtagger_ = fQGTagger;}

Expand Down Expand Up @@ -77,6 +77,7 @@ class QCDPFJetBTag : public QCDJet {
float pfBoostedDouble() const {return boosted_;}

float partonflavour() const {return partonFlavour_;}
float partonflavourPhysicsDef() const {return partonFlavourPhysicsDef_;}
float hadronflavour() const {return hadronFlavour_;}

float qgtagger() const {return QGtagger_;}
Expand Down Expand Up @@ -115,6 +116,7 @@ class QCDPFJetBTag : public QCDJet {
float QGtagger_;

float partonFlavour_;
float partonFlavourPhysicsDef_;
float hadronFlavour_;
float recommend1_;
float recommend2_;
Expand Down
54 changes: 39 additions & 15 deletions AnalysisFW/plugins/ProcessedTreeProducerBTag.cc
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ ProcessedTreeProducerBTag::ProcessedTreeProducerBTag(edm::ParameterSet const& cf
mGoodVtxNdof = cfg.getParameter<double> ("goodVtxNdof");
mGoodVtxZ = cfg.getParameter<double> ("goodVtxZ");
mMinPFPt = cfg.getParameter<double> ("minPFPt");
mMinPFPtThirdJet = cfg.getParameter<double> ("minPFPtThirdJet");
mMinJJMass = cfg.getParameter<double> ("minJJMass");
mMaxY = cfg.getParameter<double> ("maxY");
mMinNPFJets = cfg.getParameter<int> ("minNPFJets");
Expand All @@ -92,7 +93,7 @@ ProcessedTreeProducerBTag::ProcessedTreeProducerBTag(edm::ParameterSet const& cf
mIsMCarlo = cfg.getUntrackedParameter<bool> ("isMCarlo",false);
mAK4 = cfg.getUntrackedParameter<bool> ("AK4",false);
mUseGenInfo = cfg.getUntrackedParameter<bool> ("useGenInfo",false);
mMinGenPt = cfg.getUntrackedParameter<double> ("minGenPt",30);
mMinGenPt = cfg.getUntrackedParameter<double> ("minGenPt",20);
processName_ = cfg.getParameter<std::string> ("processName");
triggerNames_ = cfg.getParameter<std::vector<std::string> > ("triggerName");
//mPFJECUncSrc = cfg.getParameter<std::string> ("jecUncSrc");
Expand All @@ -104,6 +105,7 @@ ProcessedTreeProducerBTag::ProcessedTreeProducerBTag(edm::ParameterSet const& cf
mgenParticles = consumes<reco::GenParticleCollection>(cfg.getParameter<edm::InputTag>("GenParticles"));
qgToken = consumes<edm::ValueMap<float>>(edm::InputTag("QGTagger", "qgLikelihood"));
jetFlavourInfosToken_ = consumes<reco::JetFlavourInfoMatchingCollection>( cfg.getParameter<edm::InputTag>("jetFlavourInfos"));
jetFlavourInfosTokenPhysicsDef_ = consumes<reco::JetFlavourInfoMatchingCollection>( cfg.getParameter<edm::InputTag>("jetFlavourInfosPhysicsDef"));
//mPFJetsName = cfg.getParameter<edm::InputTag> ("pfjets");
//mPFJetsNameCHS = cfg.getParameter<edm::InputTag> ("pfjetschs");
//mSrcPU = cfg.getUntrackedParameter<edm::InputTag> ("srcPU",edm::InputTag("addPileupInfo"));
Expand Down Expand Up @@ -168,6 +170,7 @@ void ProcessedTreeProducerBTag::analyze(edm::Event const& event, edm::EventSetup
vector<QCDPFJet> mPFJetsCHS;
vector<LorentzVector> mGenJets;
vector<float> GenFlavour;
vector<float> GenPartonFlavourPhysicsDef;
vector<float> GenHadronFlavour;
QCDEventHdr mEvtHdr;
QCDMET mPFMet;
Expand Down Expand Up @@ -427,6 +430,20 @@ void ProcessedTreeProducerBTag::analyze(edm::Event const& event, edm::EventSetup
for ( reco::JetFlavourInfoMatchingCollection::const_iterator j = theJetFlavourInfos->begin();j != theJetFlavourInfos->end();++j ) {
//std::cout << "-------------------- Jet Flavour Info --------------------" << std::endl;

//const reco::Jet *aJet = (*j).first.get();
reco::JetFlavourInfo aInfo = (*j).second;
int FlavourGenHadron = aInfo.getHadronFlavour();
//if(FlavourGenHadron==5) cout<<FlavourGenHadron<<" "<<aJet->pt()<<" "<<aJet->eta()<<" "<<aJet->phi()<<" HADRONFLAV"<<endl;
GenHadronFlavour.push_back(FlavourGenHadron);
}

//Physics Definition Gen Level
edm::Handle<reco::JetFlavourInfoMatchingCollection> theJetFlavourInfosPhysicsDef;
event.getByToken(jetFlavourInfosTokenPhysicsDef_, theJetFlavourInfosPhysicsDef );

for ( reco::JetFlavourInfoMatchingCollection::const_iterator j = theJetFlavourInfosPhysicsDef->begin();j != theJetFlavourInfosPhysicsDef->end();++j ) {
//std::cout << "-------------------- Jet Flavour Info --------------------" << std::endl;

//const reco::Jet *aJet = (*j).first.get();
reco::JetFlavourInfo aInfo = (*j).second;
//std::cout << std::setprecision(2) << std::setw(6) << std::fixed
Expand All @@ -438,9 +455,9 @@ void ProcessedTreeProducerBTag::analyze(edm::Event const& event, edm::EventSetup
// ----------------------- Hadrons -------------------------------
//std::cout << " Hadron-based flavour: " << aInfo.getHadronFlavour() << std::endl;

int FlavourGenHadron = aInfo.getHadronFlavour();
int FlavourGenHadronPhysicsDef = aInfo.getPartonFlavour();
//if(FlavourGenHadron==5) cout<<FlavourGenHadron<<" "<<aJet->pt()<<" "<<aJet->eta()<<" "<<aJet->phi()<<" HADRONFLAV"<<endl;
GenHadronFlavour.push_back(FlavourGenHadron);
GenPartonFlavourPhysicsDef.push_back(FlavourGenHadronPhysicsDef);
}
}

Expand Down Expand Up @@ -682,7 +699,9 @@ void ProcessedTreeProducerBTag::analyze(edm::Event const& event, edm::EventSetup

cout<<qgLikelihood<<endl;
}*/


int NumbJets=0;

for(edm::View<pat::Jet>::const_iterator i_pfjetchs=patjetschs->begin(); i_pfjetchs!=patjetschs->end(); ++i_pfjetchs)
{
QCDPFJet qcdpfjetchs;
Expand Down Expand Up @@ -886,22 +905,22 @@ void ProcessedTreeProducerBTag::analyze(edm::Event const& event, edm::EventSetup
double pfCombinedMVAV2BJetTags=i_pfjetchs->bDiscriminator("pfCombinedMVAV2BJetTags");

float partonFlavour=-100;
float partonFlavourPhysicsDef=-100;
float hadronFlavour=-100;

if (mIsMCarlo && mUseGenInfo) {
partonFlavour = i_pfjetchs->partonFlavour();
hadronFlavour = i_pfjetchs->hadronFlavour();
if(i_pfjetchs->genParton() != NULL) partonFlavourPhysicsDef = i_pfjetchs->genParton()->pdgId(); //it is not always defined!!
}

qcdpfjetchs.setFlavour(partonFlavour,hadronFlavour);
qcdpfjetchs.setFlavour(partonFlavour,hadronFlavour,partonFlavourPhysicsDef);

float QGTagger=-100;

if(mAK4){
QGTagger = i_pfjetchs->userFloat("QGTaggerAK4PFCHS:qgLikelihood");
}



//Filling B-tag infos
//qcdpfjetchs.setTCHETag(TCHE,TCHP,TCHEpf,TCHPpf);
Expand All @@ -910,13 +929,13 @@ void ProcessedTreeProducerBTag::analyze(edm::Event const& event, edm::EventSetup
//qcdpfjetchs.setCombinedSecondaryVertexTag(CSV,CSVpf,CinclSVpf,CSVSoftLeptonpf,CMVApf);
qcdpfjetchs.setPositiveNegativeCSV(CSVpfPositive,CSVpfNegative);
qcdpfjetchs.setTagRecommended(pfJetProbabilityBJetTags,pfCombinedInclusiveSecondaryVertexV2BJetTags,pfCombinedMVAV2BJetTags);
qcdpfjetchs.setDeepCSV(DeepCSVb, DeepCSVc, DeepCSVl, DeepCSVbb, DeepCSVcc,
DeepCSVbN, DeepCSVcN, DeepCSVlN, DeepCSVbbN, DeepCSVccN,
DeepCSVbP, DeepCSVcP, DeepCSVlP, DeepCSVbbP, DeepCSVccP);

qcdpfjetchs.setDeepCSV(DeepCSVb, DeepCSVc, DeepCSVl, DeepCSVbb, DeepCSVcc,
DeepCSVbN, DeepCSVcN, DeepCSVlN, DeepCSVbbN, DeepCSVccN,
DeepCSVbP, DeepCSVcP, DeepCSVlP, DeepCSVbbP, DeepCSVccP);
qcdpfjetchs.setQGTagger(QGTagger);
qcdpfjetchs.setBoosted(pfBoostedDoubleSecondaryVertex);
qcdpfjetchs.setCTagger(pfCombinedCvsL,pfCombinedCvsB);
qcdpfjetchs.setBoosted(pfBoostedDoubleSecondaryVertex);
qcdpfjetchs.setCTagger(pfCombinedCvsL,pfCombinedCvsB);

float pileupJetId = -999;
if ( i_pfjetchs->hasUserFloat(pfchsjetpuid) ) { pileupJetId = i_pfjetchs->userFloat(pfchsjetpuid);}
Expand All @@ -943,9 +962,13 @@ void ProcessedTreeProducerBTag::analyze(edm::Event const& event, edm::EventSetup
LorentzVector tmpP4(0.0,0.0,0.0,0.0);
qcdpfjetchs.setGen(tmpP4,0);
}
if (qcdpfjetchs.pt() >= mMinPFPt)

NumbJets++;
if (NumbJets<=3 && qcdpfjetchs.pt() >= mMinPFPtThirdJet)
mPFJetsCHS.push_back(qcdpfjetchs);

if (NumbJets>3 && qcdpfjetchs.pt() >= mMinPFPt)
mPFJetsCHS.push_back(qcdpfjetchs);


} // if(i_pfjetchs->isPFJet() )
} // for(edm::View<pat::Jet>::const_iterator i_pfjetchs=patjetschs->begin(); i_pfjetchs!=patjetschs->end(); ++i_pfjetchs)
Expand All @@ -965,6 +988,7 @@ void ProcessedTreeProducerBTag::analyze(edm::Event const& event, edm::EventSetup
mEvent->setPFJetsCHS(mPFJetsCHS); // -- later substitute chs jets
mEvent->setGenJets(mGenJets);
mEvent->setGenFlavour(GenFlavour);
mEvent->setGenFlavourPhysicsDef(GenPartonFlavourPhysicsDef);
mEvent->setGenHadronFlavour(GenHadronFlavour);
mEvent->setPFMET(mPFMet);
mEvent->setL1Obj(mL1Objects);
Expand Down
3 changes: 2 additions & 1 deletion AnalysisFW/plugins/ProcessedTreeProducerBTag.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class ProcessedTreeProducerBTag : public edm::EDAnalyzer
bool isPFJecUncSetCHS_;
int mGoodVtxNdof,mMinNPFJets;
double mGoodVtxZ;
double mMinPFPt,mMinPFFatPt,mMaxPFFatEta,mMinGenPt,mMaxY,mMinJJMass;
double mMinPFPt,mMinPFFatPt,mMaxPFFatEta,mMinGenPt,mMaxY,mMinJJMass, mMinPFPtThirdJet;
std::string mPFJECservice;
std::string mPFPayloadName;
std::string mPFPayloadNameCHS;
Expand Down Expand Up @@ -109,6 +109,7 @@ class ProcessedTreeProducerBTag : public edm::EDAnalyzer
edm::Handle<trigger::TriggerEvent> triggerEventHandle_;
//hadron jet definition
edm::EDGetTokenT<reco::JetFlavourInfoMatchingCollection> jetFlavourInfosToken_;
edm::EDGetTokenT<reco::JetFlavourInfoMatchingCollection> jetFlavourInfosTokenPhysicsDef_;

HLTConfigProvider hltConfig_;
//---- CORRECTORS ----------------------
Expand Down
Loading