CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
PATJetSlimmer.cc
Go to the documentation of this file.
1 //
2 // $Id: PATJetSlimmer.cc,v 1.1 2011/03/24 18:45:45 mwlebour Exp $
3 //
4 
19 
21 
22 namespace pat {
23 
24  class PATJetSlimmer : public edm::EDProducer {
25  public:
26  explicit PATJetSlimmer(const edm::ParameterSet & iConfig);
27  virtual ~PATJetSlimmer() { }
28 
29  virtual void produce(edm::Event & iEvent, const edm::EventSetup & iSetup);
30 
31  private:
34 
40 // /// reduce GenJet to a bare 4-vector
41 // bool slimGenJet_;
44 // /// drop the JetCorrFactors (but keep the jet corrected!)
45 // bool dropJetCorrFactors_;
46  };
47 
48 } // namespace
49 
51  src_(consumes<edm::View<pat::Jet> >(iConfig.getParameter<edm::InputTag>("src"))),
52  map_(consumes<edm::Association<pat::PackedCandidateCollection> >(iConfig.getParameter<edm::InputTag>("map"))),
53  clearJetVars_(iConfig.getParameter<bool>("clearJetVars")),
54  clearDaughters_(iConfig.getParameter<bool>("clearDaughters")),
55  clearTrackRefs_(iConfig.getParameter<bool>("clearTrackRefs")),
56  dropSpecific_(iConfig.getParameter<bool>("dropSpecific"))
57 // dropJetCorrFactors_(iConfig.getParameter<bool>("dropJetCorrFactors"))
58 {
59  produces<std::vector<pat::Jet> >();
60 }
61 
62 void
64  using namespace edm;
65  using namespace std;
66 
68  iEvent.getByToken(src_, src);
70  iEvent.getByToken(map_,pf2pc);
71 
72  auto_ptr<vector<pat::Jet> > out(new vector<pat::Jet>());
73  out->reserve(src->size());
74 
75  for (edm::View<pat::Jet>::const_iterator it = src->begin(), ed = src->end(); it != ed; ++it) {
76  out->push_back(*it);
77  pat::Jet & jet = out->back();
78 
79  if (clearJetVars_) {
80 // jet.setJetArea(0);
81  jet.setNPasses(0);
82 // jet.setPileup(0);
83  }
84  if(clearTrackRefs_)
85  {
87  }
88  if (clearDaughters_) {
89  jet.clearDaughters();
90  jet.pfCandidatesFwdPtr_.clear();
91  jet.caloTowersFwdPtr_.clear();
92  } else { //rekey
93  //copy old
95  jet.clearDaughters();
96  std::map<unsigned int,reco::CandidatePtr> ptrs;
97  for(unsigned int i=0;i<old.size();i++)
98  {
99  // jet.addDaughter(refToPtr((*pf2pc)[old[i]]));
100  ptrs[((*pf2pc)[old[i]]).key()]=refToPtr((*pf2pc)[old[i]]);
101  }
102  for(std::map<unsigned int,reco::CandidatePtr>::iterator itp=ptrs.begin();itp!=ptrs.end();itp++) //iterate on sorted items
103  {
104  jet.addDaughter(itp->second);
105  }
106 
107 
108  }
109 // if (slimGenJet_) {
110 // const reco::GenJet * genjet = it->genJet();
111 // if (genjet) {
112 // std::vector<reco::GenJet> tempGenJet(1, reco::GenJet(genjet->p4(), reco::Particle::Point(), reco::GenJet::Specific()));
113 // jet.setGenJet(reco::GenJetRef(&tempGenJet,0), true);
114 // }
115 // }
116  if (dropSpecific_) {
117  // FIXME add method in pat::Jet
118  jet.specificCalo_.clear();
119  jet.specificPF_.clear();
120  }
121 // if (dropJetCorrFactors_) {
122 // // FIXME add method in pat::Jet
123 // jet.jetEnergyCorrections_.clear();
124 // }
125  }
126 
127  iEvent.put(out);
128 }
129 
131 using namespace pat;
int i
Definition: DBlmapReader.cc:9
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:81
CaloTowerFwdPtrVector caloTowersFwdPtr_
Definition: Jet.h:510
Ptr< typename C::value_type > refToPtr(Ref< C, typename C::value_type, refhelper::FindUsingAdvance< C, typename C::value_type > > const &ref)
Definition: RefToPtr.h:18
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:434
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
std::vector< pat::PackedCandidate > PackedCandidateCollection
bool dropSpecific_
drop the Calo or PF specific
edm::EDGetTokenT< edm::Association< pat::PackedCandidateCollection > > map_
std::vector< PFSpecific > specificPF_
Definition: Jet.h:558
void setAssociatedTracks(const reco::TrackRefVector &tracks)
method to set the vector of refs to the tracks associated to this jet
Definition: Jet.cc:393
int iEvent
Definition: GenABIO.cc:243
std::vector< CaloSpecific > specificCalo_
Definition: Jet.h:556
edm::EDGetTokenT< edm::View< pat::Jet > > src_
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:116
virtual void produce(edm::Event &iEvent, const edm::EventSetup &iSetup)
tuple out
Definition: dbtoconf.py:99
std::vector< CandidatePtr > daughters
collection of references to daughters
Analysis-level calorimeter jet class.
Definition: Jet.h:73
PATJetSlimmer(const edm::ParameterSet &iConfig)
void clearDaughters()
clear daughter references
bool clearDaughters_
reset daughters to an empty vector
virtual void setNPasses(int fPasses)
Set number of passes taken by algorithm.
Definition: Jet.h:113
reco::PFCandidateFwdPtrVector pfCandidatesFwdPtr_
Definition: Jet.h:516
list key
Definition: combine.py:13
const daughters & daughterPtrVector() const
references to daughtes
void addDaughter(const CandidatePtr &)
add a daughter via a reference
Matcher of reconstructed objects to L1 Muons.
virtual ~PATJetSlimmer()
bool clearJetVars_
clear mJetArea, mPassNumber, mPileupEnergy