CMS 3D CMS Logo

MinBias.cc
Go to the documentation of this file.
1 // user include files
8 
9 namespace cms {
10 MinBias::MinBias(const edm::ParameterSet& iConfig) : geo_(nullptr) {
11  // get names of modules, producing object collections
12  hbheLabel_= iConfig.getParameter<std::string>("hbheInput");
13  hoLabel_ = iConfig.getParameter<std::string>("hoInput");
14  hfLabel_ = iConfig.getParameter<std::string>("hfInput");
15  hbheToken_= mayConsume<HBHERecHitCollection>(edm::InputTag(hbheLabel_));
16  hoToken_ = mayConsume<HORecHitCollection>(edm::InputTag(hoLabel_));
17  hfToken_ = mayConsume<HFRecHitCollection>(edm::InputTag(hfLabel_));
18  allowMissingInputs_=iConfig.getUntrackedParameter<bool>("AllowMissingInputs",false);
19 
20 }
21 
24  myTree_ = fs->make<TTree>("RecJet","RecJet Tree");
25  myTree_->Branch("mydet", &mydet, "mydet/I");
26  myTree_->Branch("mysubd", &mysubd, "mysubd/I");
27  myTree_->Branch("depth", &depth, "depth/I");
28  myTree_->Branch("ieta", &ieta, "ieta/I");
29  myTree_->Branch("iphi", &iphi, "iphi/I");
30  myTree_->Branch("eta", &eta, "eta/F");
31  myTree_->Branch("phi", &phi, "phi/F");
32  myTree_->Branch("mom1", &mom1, "mom1/F");
33  myTree_->Branch("mom2", &mom2, "mom2/F");
34  myTree_->Branch("mom3", &mom3, "mom3/F");
35  myTree_->Branch("mom4", &mom4, "mom4/F");
36 
37 }
38 
39 void MinBias::beginRun(edm::Run const& iRun, edm::EventSetup const& iSetup) {
41  iSetup.get<CaloGeometryRecord>().get(pG);
42  geo_ = pG.product();
43  std::vector<DetId> did = geo_->getValidDetIds();
44 
45  for (auto const& id : did) {
46  if( (id).det() == DetId::Hcal ) {
47  theFillDetMap0_[id] = 0.;
48  theFillDetMap1_[id] = 0.;
49  theFillDetMap2_[id] = 0.;
50  theFillDetMap3_[id] = 0.;
51  theFillDetMap4_[id] = 0.;
52  }
53  }
54 }
55 
57  const HcalGeometry* hgeo = static_cast<const HcalGeometry*>(geo_->getSubdetectorGeometry(DetId::Hcal,1));
58  const std::vector<DetId>& did = hgeo->getValidDetIds() ;
59  int i=0;
60  for (const auto& id : did) {
61  // if( id.det() == DetId::Hcal ) {
62  GlobalPoint pos = hgeo->getPosition(id);
63  mydet = (int)(id.det());
64  mysubd = (id.subdetId());
65  depth = HcalDetId(id).depth();
66  ieta = HcalDetId(id).ieta();
67  iphi = HcalDetId(id).iphi();
68  phi = pos.phi();
69  eta = pos.eta();
70  if ( theFillDetMap0_[id] > 0. ) {
74  2.*pow(mom2,3);
76 
77  } else {
78  mom1 = 0.; mom2 = 0.; mom3 = 0.; mom4 = 0.;
79  }
80  edm::LogWarning("MinBias")<<" Detector "<< id.rawId()<<" mydet "<<mydet
81  <<" "<<mysubd<<" "<<depth<<" "<<ieta<<" "
82  <<iphi<<" "<<pos.eta()<<" "<<pos.phi();
83  edm::LogWarning("MinBias")<<" Energy "<<mom1<<" "<<mom2<<std::endl;
84  myTree_->Fill();
85  i++;
86  // }
87  }
88  edm::LogWarning("MinBias")<<" The number of CaloDet records "<<did.size();
89  edm::LogWarning("MinBias")<<" The number of Hcal records "<<i<<std::endl;
90 
91  /*
92  std::cout << "===== Start writing user histograms =====" << std::endl;
93  hOutputFile->SetCompressionLevel(2);
94  hOutputFile->cd();
95  myTree->Write();
96  hOutputFile->Close() ;
97  std::cout << "===== End writing user histograms =======" << std::endl;
98  */
99 }
100 
101 
102 //
103 // member functions
104 //
105 
106 // ------------ method called to produce the data ------------
107 void MinBias::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup){
108 
109  if (!hbheLabel_.empty()) {
111  iEvent.getByToken(hbheToken_,hbhe);
112  if (!hbhe.isValid()) {
113  // can't find it!
114  if (!allowMissingInputs_) {
115  *hbhe; // will throw the proper exception
116  }
117  } else {
118  for (auto const& hbheItr : (HBHERecHitCollection)(*hbhe)) {
119  DetId id = (hbheItr).detid();
120  if (hbheItr.energy() > 0. )
121  edm::LogWarning("MinBias")<<" Energy = "<<hbheItr.energy();
122  theFillDetMap0_[id] += 1.;
123  theFillDetMap1_[id] += hbheItr.energy();
124  theFillDetMap2_[id] += pow(hbheItr.energy(),2);
125  theFillDetMap3_[id] += pow(hbheItr.energy(),3);
126  theFillDetMap4_[id] += pow(hbheItr.energy(),4);
127  }
128  }
129  }
130 
131  if (!hoLabel_.empty()) {
133  iEvent.getByToken(hoToken_,ho);
134  if (!ho.isValid()) {
135  // can't find it!
136  if (!allowMissingInputs_) {
137  *ho; // will throw the proper exception
138  }
139  } else {
140  for (auto const& hoItr : (HORecHitCollection)(*ho)) {
141  DetId id = hoItr.detid();
142  theFillDetMap0_[id] += 1.;
143  theFillDetMap1_[id] += hoItr.energy();
144  theFillDetMap2_[id] += pow(hoItr.energy(),2);
145  theFillDetMap3_[id] += pow(hoItr.energy(),3);
146  theFillDetMap4_[id] += pow(hoItr.energy(),4);
147  }
148  }
149  }
150 
151  if (!hfLabel_.empty()) {
153  iEvent.getByToken(hfToken_,hf);
154  if (!hf.isValid()) {
155  // can't find it!
156  if (!allowMissingInputs_) {
157  *hf; // will throw the proper exception
158  }
159  } else {
160  for (auto const hfItr : (HFRecHitCollection)(*hf)) {
161  DetId id = hfItr.detid();
162  theFillDetMap0_[id] += 1.;
163  theFillDetMap1_[id] += hfItr.energy();
164  theFillDetMap2_[id] += pow(hfItr.energy(),2);
165  theFillDetMap3_[id] += pow(hfItr.energy(),3);
166  theFillDetMap4_[id] += pow(hfItr.energy(),4);
167  }
168  }
169  }
170 
171 }
172 }
float mom2
Definition: MinBias.h:60
T getParameter(std::string const &) const
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:49
T getUntrackedParameter(std::string const &, T const &) const
float mom1
Definition: MinBias.h:60
float mom4
Definition: MinBias.h:60
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
MinBias(const edm::ParameterSet &)
Definition: MinBias.cc:10
edm::EDGetTokenT< HFRecHitCollection > hfToken_
Definition: MinBias.h:51
void beginJob() override
Definition: MinBias.cc:22
const std::vector< DetId > & getValidDetIds(DetId::Detector det=DetId::Detector(0), int subdet=0) const override
Get a list of valid detector ids (for the given subdetector)
Definition: HcalGeometry.cc:76
#define nullptr
Geom::Phi< T > phi() const
Definition: PV3DBase.h:69
std::string hoLabel_
Definition: MinBias.h:48
TTree * myTree_
Definition: MinBias.h:56
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
std::map< DetId, double > theFillDetMap4_
Definition: MinBias.h:67
int mydet
Definition: MinBias.h:58
int ieta
Definition: MinBias.h:58
edm::EDGetTokenT< HORecHitCollection > hoToken_
Definition: MinBias.h:50
const CaloGeometry * geo_
Definition: MinBias.h:61
bool allowMissingInputs_
Definition: MinBias.h:53
int depth() const
get the tower depth
Definition: HcalDetId.h:166
int iEvent
Definition: GenABIO.cc:224
void endJob() override
Definition: MinBias.cc:56
std::map< DetId, double > theFillDetMap3_
Definition: MinBias.h:66
int ieta() const
get the cell ieta
Definition: HcalDetId.h:159
edm::EDGetTokenT< HBHERecHitCollection > hbheToken_
Definition: MinBias.h:49
bool isValid() const
Definition: HandleBase.h:74
GlobalPoint getPosition(const DetId &id) const
Namespace of DDCMS conversion namespace.
int depth
Definition: MinBias.h:58
int iphi() const
get the cell iphi
Definition: HcalDetId.h:161
Definition: DetId.h:18
float eta
Definition: MinBias.h:59
float phi
Definition: MinBias.h:59
float mom3
Definition: MinBias.h:60
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition: MinBias.cc:107
void beginRun(edm::Run const &, edm::EventSetup const &) override
Definition: MinBias.cc:39
std::vector< DetId > getValidDetIds() const
Get the list of all valid detector ids.
T eta() const
Definition: PV3DBase.h:76
int iphi
Definition: MinBias.h:58
std::map< DetId, double > theFillDetMap2_
Definition: MinBias.h:65
T get() const
Definition: EventSetup.h:71
std::string hbheLabel_
Definition: MinBias.h:48
std::map< DetId, double > theFillDetMap0_
Definition: MinBias.h:63
int mysubd
Definition: MinBias.h:58
std::map< DetId, double > theFillDetMap1_
Definition: MinBias.h:64
std::string hfLabel_
Definition: MinBias.h:48
T const * product() const
Definition: ESHandle.h:86
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
Definition: Run.h:45