CMS 3D CMS Logo

CaloRecoTauTagInfoProducer.cc
Go to the documentation of this file.
1 /* class CaloRecoTauTagInfoProducer
2  * returns a CaloTauTagInfo collection starting from a JetTrackAssociations <a CaloJet,a list of Track's> collection,
3  * created: Aug 28 2007,
4  * revised: ,
5  * authors: Ludovic Houchu
6  */
7 
12 
14 
21 
24 
27 
29 
30 #include "CLHEP/Random/RandGauss.h"
31 
32 #include "Math/GenVector/VectorUtil.h"
33 
34 #include <memory>
35 
36 using namespace reco;
37 using namespace edm;
38 using namespace std;
39 
41  public:
43  ~CaloRecoTauTagInfoProducer() override;
44  void produce(edm::Event&,const edm::EventSetup&) override;
45  static void fillDescriptions(edm::ConfigurationDescriptions & descriptions);
46  private:
53 };
54 
55 
57  CaloJetTracksAssociatorProducer_ = iConfig.getParameter<edm::InputTag>("CaloJetTracksAssociatorProducer");
58  PVProducer_ = iConfig.getParameter<edm::InputTag>("PVProducer");
59  smearedPVsigmaX_ = iConfig.getParameter<double>("smearedPVsigmaX");
60  smearedPVsigmaY_ = iConfig.getParameter<double>("smearedPVsigmaY");
61  smearedPVsigmaZ_ = iConfig.getParameter<double>("smearedPVsigmaZ");
62  CaloRecoTauTagInfoAlgo_=new CaloRecoTauTagInfoAlgorithm(iConfig);
63 
64  produces<CaloTauTagInfoCollection>();
65  //produces<DetIdCollection>();
66 }
68  delete CaloRecoTauTagInfoAlgo_;
69 }
70 
72  edm::Handle<JetTracksAssociationCollection> theCaloJetTracksAssociatorCollection;
73  iEvent.getByLabel(CaloJetTracksAssociatorProducer_,theCaloJetTracksAssociatorCollection);
74 
75  // query a rec/sim PV
77  iEvent.getByLabel(PVProducer_,thePVs);
78  const VertexCollection vertCollection=*(thePVs.product());
79  Vertex thePV;
80  thePV=*(vertCollection.begin());
81 
82  // auto selectedDetIds = std::make_unique<DetIdCollection>();
84 
85  for(JetTracksAssociationCollection::const_iterator iAssoc=theCaloJetTracksAssociatorCollection->begin();iAssoc!=theCaloJetTracksAssociatorCollection->end();iAssoc++){
86 // CaloTauTagInfo myCaloTauTagInfo=CaloRecoTauTagInfoAlgo_->buildCaloTauTagInfo(iEvent,iSetup,(*iAssoc).first.castTo<CaloJetRef>(),(*iAssoc).second,thePV);
87  CaloTauTagInfo myCaloTauTagInfo=CaloRecoTauTagInfoAlgo_->buildCaloTauTagInfo(iEvent,iSetup,(*iAssoc).first,(*iAssoc).second,thePV);
88  extCollection->push_back(myCaloTauTagInfo);
89  // std::vector<DetId> myDets = CaloRecoTauTagInfoAlgo_->getVectorDetId((*iAssoc).first.castTo<CaloJetRef>());
90 
91  //Saving the selectedDetIds
92  // for(unsigned int i=0; i<myDets.size();i++)
93  // selectedDetIds->push_back(myDets[i]);
94  }
95 
96  std::unique_ptr<CaloTauTagInfoCollection> resultExt(extCollection);
97  iEvent.put(std::move(resultExt));
98 
99  // iEvent.put(std::move(selectedDetIds));
100 }
101 
102 void
104  // caloRecoTauTagInfoProducer
106  desc.add<int>("tkminTrackerHitsn", 3);
107  desc.add<double>("ECALBasicClustersAroundCaloJet_DRConeSize", 0.5);
108  desc.add<int>("tkminPixelHitsn", 0);
109  desc.add<double>("ECALBasicClusterpropagTrack_matchingDRConeSize", 0.015);
110  desc.add<edm::InputTag>("PVProducer", edm::InputTag("offlinePrimaryVertices"));
111  desc.add<double>("tkminPt", 0.5);
112  desc.add<double>("smearedPVsigmaX", 0.0015);
113  desc.add<bool>("UsePVconstraint", true);
114  desc.add<double>("tkmaxChi2", 100.0);
115  desc.add<edm::InputTag>("EndcapBasicClustersSource", edm::InputTag("multi5x5SuperClusters","multi5x5EndcapBasicClusters"));
116  desc.add<double>("smearedPVsigmaY", 0.0015);
117  desc.add<edm::InputTag>("BarrelBasicClustersSource", edm::InputTag("hybridSuperClusters","hybridBarrelBasicClusters"));
118  desc.add<double>("ECALBasicClusterminE", 1.0);
119  desc.add<double>("smearedPVsigmaZ", 0.005);
120  desc.add<double>("tkPVmaxDZ", 1.0);
121  desc.add<bool>("UseTrackQuality", true);
122  desc.add<std::string>("tkQuality", "highPurity");
123  desc.add<double>("tkmaxipt", 0.1);
124  desc.add<edm::InputTag>("CaloJetTracksAssociatorProducer", edm::InputTag("ic5JetTracksAssociatorAtVertex"));
125  descriptions.add("caloRecoTauTagInfoProducer", desc);
126 }
T getParameter(std::string const &) const
CaloRecoTauTagInfoProducer(const edm::ParameterSet &)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:125
void produce(edm::Event &, const edm::EventSetup &) override
transient_vector_type::const_iterator const_iterator
const_iterator end() const
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
std::vector< CaloTauTagInfo > CaloTauTagInfoCollection
collection of CaloTauTagInfo objects
int iEvent
Definition: GenABIO.cc:224
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
ParameterDescriptionBase * add(U const &iLabel, T const &value)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:480
CaloRecoTauTagInfoAlgorithm * CaloRecoTauTagInfoAlgo_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
T const * product() const
Definition: Handle.h:74
void add(std::string const &label, ParameterSetDescription const &psetDescription)
fixed size matrix
HLT enums.
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
const_iterator begin() const
def move(src, dest)
Definition: eostools.py:511