9 #include <TObjString.h> 22 passingProbes_.clear();
23 for (
size_t i = 0,
n = view->size();
i <
n; ++
i) passingProbes_.push_back(view->refAt(
i));
30 value_ = (
std::find(passingProbes_.begin(), passingProbes_.end(), probe) != passingProbes_.end());
32 value_ =
bool(cut_(*probe));
42 addBranches_(tree_, iConfig, iC,
"");
45 if (iConfig.
existsAs<
double>(
"eventWeight")) {
49 weightMode_ = External;
54 if (weightMode_ !=
None) {
55 tree_->Branch(
"weight", &weight_,
"weight/F");
56 tree_->Branch(
"totWeight", &totWeight_,
"totWeight/F");
62 tree_->Branch(
"PUweight", &PUweight_,
"PUweight/F");
68 addRunLumiInfo_ = iConfig.
existsAs<
bool>(
"addRunLumiInfo") ? iConfig.
getParameter<
bool>(
"addRunLumiInfo") :
false;
69 if (addRunLumiInfo_) {
70 tree_->Branch(
"run", &run_,
"run/i");
71 tree_->Branch(
"lumi", &lumi_,
"lumi/i");
72 tree_->Branch(
"event", &
event_,
"event/l");
73 tree_->Branch(
"truePU", &truePU_,
"truePU/I");
75 addEventVariablesInfo_ = iConfig.
existsAs<
bool>(
"addEventVariablesInfo") ? iConfig.
getParameter<
bool>(
"addEventVariablesInfo") :
false;
76 if (addEventVariablesInfo_) {
88 addCaloMet_ = iConfig.
existsAs<
bool>(
"addCaloMet") ? iConfig.
getParameter<
bool>(
"addCaloMet") :
true;
89 tree_->Branch(
"event_nPV" ,&mNPV_ ,
"mNPV/I");
93 tree_->Branch(
"event_met_calomet" ,&mMET_ ,
"mMET/F");
94 tree_->Branch(
"event_met_calosumet" ,&mSumET_ ,
"mSumET/F");
95 tree_->Branch(
"event_met_calometsignificance",&mMETSign_ ,
"mMETSign/F");
96 tree_->Branch(
"event_met_tcmet" ,&mtcMET_ ,
"mtcMET/F");
97 tree_->Branch(
"event_met_tcsumet" ,&mtcSumET_ ,
"mtcSumET/F");
98 tree_->Branch(
"event_met_tcmetsignificance",&mtcMETSign_ ,
"mtcMETSign/F");
100 tree_->Branch(
"event_met_pfmet" ,&mpfMET_ ,
"mpfMET/F");
101 tree_->Branch(
"event_met_pfphi" ,&mpfPhi_ ,
"mpfPhi/F");
102 tree_->Branch(
"event_met_pfsumet" ,&mpfSumET_ ,
"mpfSumET/F");
104 tree_->Branch(
"event_met_pfmetsignificance",&mpfMETSign_ ,
"mpfMETSign/F");
105 tree_->Branch(
"event_PrimaryVertex_x" ,&mPVx_ ,
"mPVx/F");
106 tree_->Branch(
"event_PrimaryVertex_y" ,&mPVy_ ,
"mPVy/F");
107 tree_->Branch(
"event_PrimaryVertex_z" ,&mPVz_ ,
"mPVz/F");
108 tree_->Branch(
"event_BeamSpot_x" ,&mBSx_ ,
"mBSx/F");
109 tree_->Branch(
"event_BeamSpot_y" ,&mBSy_ ,
"mBSy/F");
110 tree_->Branch(
"event_BeamSpot_z" ,&mBSz_ ,
"mBSz/F");
116 tree_->Branch(
"event_rho" ,&rho_ ,
"rho/F");
121 addRunLumiInfo_(
false),
122 addEventVariablesInfo_(
false),
136 for (std::vector<std::string>::const_iterator it = stringVars.begin(), ed = stringVars.end(); it != ed; ++it) {
141 for (std::vector<std::string>::const_iterator it = inputTagVars.begin(), ed = inputTagVars.end(); it != ed; ++it) {
148 for (std::vector<std::string>::const_iterator it = stringFlags.begin(), ed = stringFlags.end(); it != ed; ++it) {
153 for (std::vector<std::string>::const_iterator it = inputTagFlags.begin(), ed = inputTagFlags.end(); it != ed; ++it) {
158 for (std::vector<tnp::ProbeVariable>::iterator it =
vars_.begin(), ed =
vars_.end(); it != ed; ++it) {
159 tree->Branch(it->name().c_str(), it->address(), (it->name()+
"/F").c_str());
162 for (std::vector<tnp::ProbeFlag>::iterator it =
flags_.begin(), ed =
flags_.end(); it != ed; ++it) {
163 tree->Branch(it->name().c_str(), it->address(), (it->name()+
"/I").c_str());
179 truePU_ = PupInfo->begin()->getTrueNumInteractions();
183 for (std::vector<tnp::ProbeVariable>::const_iterator it =
vars_.begin(), ed =
vars_.end(); it != ed; ++it) {
186 for (std::vector<tnp::ProbeFlag>::const_iterator it =
flags_.begin(), ed =
flags_.end(); it != ed; ++it) {
218 for(
unsigned int ind=0;ind<recVtxs->size();ind++) {
219 if (!((*recVtxs)[ind].isFake()) && ((*recVtxs)[ind].ndof()>4)
220 && (fabs((*recVtxs)[ind].z())<=24.0) &&
221 ((*recVtxs)[ind].position().Rho()<=2.0) ) {
224 mPVx_ = (*recVtxs)[ind].x();
225 mPVy_ = (*recVtxs)[ind].y();
226 mPVz_ = (*recVtxs)[ind].z();
248 mMET_ = (*met)[0].et();
256 if (tcmet->empty()) {
272 if (pfmet->empty()) {
312 list->Add(
new TObjString(pset.
dump().c_str()));
bool addEventVariablesInfo_
Add branches with event variables: met, sum ET, .. etc.
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Analysis-level MET class.
T getParameter(std::string const &) const
EventNumber_t event() const
edm::EDGetTokenT< reco::PFMETCollection > pfmetToken_
bool existsAs(std::string const ¶meterName, bool trackiness=true) const
checks if a parameter exists as a given type
void init(const edm::Event &iEvent) const
To be called at the beginning of the event (will fetch Candidate View if needed)
edm::EDGetTokenT< GenEventInfoProduct > weightSrcToken_
EDGetTokenT< ProductType > mayConsume(edm::InputTag const &tag)
bool addRunLumiInfo_
Add branches with run and lumisection number.
void writeProvenance(const edm::ParameterSet &pset) const
std::string dump(unsigned int indent=0) const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
std::vector< MET > METCollection
edm::EDGetTokenT< double > PUweightSrcToken_
std::vector< ProbeVariable > vars_
void fill(const reco::CandidateBaseRef &probe) const
To be called for each item.
std::vector< Variable::Flags > flags
~ProbeFlag()
Destructor (does nothing)
double pt() const final
transverse momentum
std::vector< Vertex > VertexCollection
collection of Vertex objects
T * make(const Args &...args) const
make new ROOT object
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
LuminosityBlockNumber_t luminosityBlock() const
std::vector< reco::MET > METCollection
collection of MET objects
void fill(const reco::CandidateBaseRef &probe) const
To be called once per probe, to fill the values for this probe.
A variable for the probe: can be a string expression or an external ValueMap<float> ...
std::vector< std::string > getParameterNamesForType(bool trackiness=true) const
std::vector< ProbeFlag > flags_
~BaseTreeFiller()
Destructor, does nothing but it's out-of-line as we have complex data members.
edm::EDGetTokenT< reco::CaloMETCollection > metToken_
edm::EDGetTokenT< pat::METCollection > pfmetTokenMiniAOD_
edm::EDGetTokenT< reco::METCollection > tcmetToken_
void init(const edm::Event &iEvent) const
To be called once per event, to load possible external variables.
edm::EDGetTokenT< double > rhoToken_
~ProbeVariable()
Destructor (does nothing)
void addBranches_(TTree *tree, const edm::ParameterSet &iConfig, edm::ConsumesCollector &iC, const std::string &branchNamePrefix="")
std::vector< reco::CaloMET > CaloMETCollection
collection of CaloMET objects
edm::EDGetTokenT< reco::VertexCollection > recVtxsToken_
edm::EDGetTokenT< reco::BeamSpot > beamSpotToken_
std::vector< reco::PFMET > PFMETCollection
collection of PFMET objects
bool isUninitialized() const
const Point & position() const
position
edm::EDGetTokenT< std::vector< PileupSummaryInfo > > pileupInfoToken_
double significance() const
double phi() const final
momentum azimuthal angle
bool storePUweight_
Store Pileup weight when running over Monte Carlo.
BaseTreeFiller(const char *name, const edm::ParameterSet &config, edm::ConsumesCollector &&iC)
specify the name of the TTree, and the configuration for it
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