CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Protected Member Functions | Private Attributes
EECosmicTask Class Reference

#include <EECosmicTask.h>

Inheritance diagram for EECosmicTask:
edm::EDAnalyzer

Public Member Functions

 EECosmicTask (const edm::ParameterSet &ps)
 Constructor. More...
 
virtual ~EECosmicTask ()
 Destructor. More...
 
- Public Member Functions inherited from edm::EDAnalyzer
 EDAnalyzer ()
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 

Protected Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c)
 Analyze. More...
 
void beginJob (void)
 BeginJob. More...
 
void beginRun (const edm::Run &r, const edm::EventSetup &c)
 BeginRun. More...
 
void cleanup (void)
 Cleanup. More...
 
void endJob (void)
 EndJob. More...
 
void endRun (const edm::Run &r, const edm::EventSetup &c)
 EndRun. More...
 
void reset (void)
 Reset. More...
 
void setup (void)
 Setup. More...
 
- Protected Member Functions inherited from edm::EDAnalyzer
CurrentProcessingContext const * currentContext () const
 

Private Attributes

DQMStoredqmStore_
 
edm::InputTag EcalRawDataCollection_
 
edm::InputTag EcalRecHitCollection_
 
edm::InputTag EcalUncalibratedRecHitCollection_
 
bool enableCleanup_
 
int ievt_
 
bool init_
 
double maxJitter_
 
bool mergeRuns_
 
MonitorElementmeSelMap_ [18]
 
MonitorElementmeSpectrum_ [2][18]
 
double minJitter_
 
std::string prefixME_
 
double threshold_
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
typedef WorkerT< EDAnalyzerWorkerType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 

Detailed Description

Definition at line 20 of file EECosmicTask.h.

Constructor & Destructor Documentation

EECosmicTask::EECosmicTask ( const edm::ParameterSet ps)

Constructor.

Definition at line 29 of file EECosmicTask.cc.

References dqmStore_, EcalRawDataCollection_, EcalRecHitCollection_, EcalUncalibratedRecHitCollection_, enableCleanup_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), i, init_, maxJitter_, mergeRuns_, meSelMap_, meSpectrum_, minJitter_, cmsCodeRules.cppFunctionSkipper::operator, prefixME_, and threshold_.

29  {
30 
31  init_ = false;
32 
34 
35  prefixME_ = ps.getUntrackedParameter<std::string>("prefixME", "");
36 
37  enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false);
38 
39  mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns", false);
40 
41  EcalRawDataCollection_ = ps.getParameter<edm::InputTag>("EcalRawDataCollection");
42  EcalUncalibratedRecHitCollection_ = ps.getParameter<edm::InputTag>("EcalUncalibratedRecHitCollection");
43  EcalRecHitCollection_ = ps.getParameter<edm::InputTag>("EcalRecHitCollection");
44 
45  threshold_ = 0.12500; // typical muon energy deposit is 250 MeV
46 
47  minJitter_ = -2.0;
48  maxJitter_ = 1.5;
49 
50  for (int i = 0; i < 18; i++) {
51  meSelMap_[i] = 0;
52  meSpectrum_[0][i] = 0;
53  meSpectrum_[1][i] = 0;
54  }
55 
56 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
edm::InputTag EcalRawDataCollection_
Definition: EECosmicTask.h:68
bool enableCleanup_
Definition: EECosmicTask.h:64
edm::InputTag EcalUncalibratedRecHitCollection_
Definition: EECosmicTask.h:69
std::string prefixME_
Definition: EECosmicTask.h:62
MonitorElement * meSelMap_[18]
Definition: EECosmicTask.h:72
edm::InputTag EcalRecHitCollection_
Definition: EECosmicTask.h:70
double maxJitter_
Definition: EECosmicTask.h:78
MonitorElement * meSpectrum_[2][18]
Definition: EECosmicTask.h:74
double minJitter_
Definition: EECosmicTask.h:77
double threshold_
Definition: EECosmicTask.h:76
DQMStore * dqmStore_
Definition: EECosmicTask.h:60
EECosmicTask::~EECosmicTask ( )
virtual

Destructor.

Definition at line 58 of file EECosmicTask.cc.

58  {
59 
60 }

Member Function Documentation

void EECosmicTask::analyze ( const edm::Event e,
const edm::EventSetup c 
)
protectedvirtual

Analyze.

Implements edm::EDAnalyzer.

Definition at line 163 of file EECosmicTask.cc.

References EcalDCCHeaderBlock::COSMIC, EcalDCCHeaderBlock::COSMICS_GLOBAL, EcalDCCHeaderBlock::COSMICS_LOCAL, EcalEndcap, EcalRawDataCollection_, EcalRecHitCollection_, EcalUncalibratedRecHitCollection_, MonitorElement::Fill(), edm::Event::getByLabel(), i, ievt_, init_, ecalpyutils::ism(), Numbers::iSM(), edm::HandleBase::isValid(), EEDetId::ix(), LogDebug, maxJitter_, meSelMap_, meSpectrum_, minJitter_, EcalDCCHeaderBlock::MTCC, EcalDCCHeaderBlock::PHYSICS_GLOBAL, EcalDCCHeaderBlock::PHYSICS_LOCAL, ExpressReco_HICollisions_FallBack::runType, setup(), Numbers::subDet(), threshold_, EEDetId::validDetId(), and EEDetId::XYMODE.

163  {
164 
165  bool isData = true;
166  bool enable = false;
167  int runType[18];
168  for (int i=0; i<18; i++) runType[i] = -1;
169 
171 
172  if ( e.getByLabel(EcalRawDataCollection_, dcchs) ) {
173 
174  for ( EcalRawDataCollection::const_iterator dcchItr = dcchs->begin(); dcchItr != dcchs->end(); ++dcchItr ) {
175 
176  if ( Numbers::subDet( *dcchItr ) != EcalEndcap ) continue;
177 
178  int ism = Numbers::iSM( *dcchItr, EcalEndcap );
179 
180  runType[ism-1] = dcchItr->getRunType();
181 
182  if ( dcchItr->getRunType() == EcalDCCHeaderBlock::COSMIC ||
183  dcchItr->getRunType() == EcalDCCHeaderBlock::MTCC ||
184  dcchItr->getRunType() == EcalDCCHeaderBlock::COSMICS_GLOBAL ||
185  dcchItr->getRunType() == EcalDCCHeaderBlock::PHYSICS_GLOBAL ||
186  dcchItr->getRunType() == EcalDCCHeaderBlock::COSMICS_LOCAL ||
187  dcchItr->getRunType() == EcalDCCHeaderBlock::PHYSICS_LOCAL ) enable = true;
188 
189  }
190 
191  } else {
192 
193  isData = false; enable = true;
194  edm::LogWarning("EECosmicTask") << EcalRawDataCollection_ << " not available";
195 
196  }
197 
198  if ( ! enable ) return;
199 
200  if ( ! init_ ) this->setup();
201 
202  ievt_++;
203 
205 
206  if ( e.getByLabel(EcalRecHitCollection_, hits) ) {
207 
208  int neeh = hits->size();
209  LogDebug("EECosmicTask") << "event " << ievt_ << " hits collection size " << neeh;
210 
212 
213  if ( ! e.getByLabel(EcalUncalibratedRecHitCollection_, uhits) ) {
214  edm::LogWarning("EECosmicTask") << EcalUncalibratedRecHitCollection_ << " not available";
215  }
216 
217  for ( EcalRecHitCollection::const_iterator hitItr = hits->begin(); hitItr != hits->end(); ++hitItr ) {
218 
219  EEDetId id = hitItr->id();
220 
221  int ix = id.ix();
222  int iy = id.iy();
223 
224  int ism = Numbers::iSM( id );
225 
226  if ( ism >= 1 && ism <= 9 ) ix = 101 - ix;
227 
228  float xix = ix - 0.5;
229  float xiy = iy - 0.5;
230 
231  int iz = 0;
232 
233  if ( ism >= 1 && ism <= 9 ) iz = -1;
234  if ( ism >= 10 && ism <= 18 ) iz = +1;
235 
236  if ( isData ) {
237 
238  if ( ! ( runType[ism-1] == EcalDCCHeaderBlock::COSMIC ||
239  runType[ism-1] == EcalDCCHeaderBlock::MTCC ||
240  runType[ism-1] == EcalDCCHeaderBlock::COSMICS_GLOBAL ||
241  runType[ism-1] == EcalDCCHeaderBlock::PHYSICS_GLOBAL ||
242  runType[ism-1] == EcalDCCHeaderBlock::COSMICS_LOCAL ||
243  runType[ism-1] == EcalDCCHeaderBlock::PHYSICS_LOCAL ) ) continue;
244 
245  }
246 
247  float xval = hitItr->energy();
248  if ( xval <= 0. ) xval = 0.0;
249 
250  // look for the seeds
251  float e3x3 = 0.;
252  bool isSeed = true;
253 
254  // evaluate 3x3 matrix around a seed
255  for(int icry=0; icry<9; ++icry) {
256  unsigned int row = icry/3;
257  unsigned int column = icry%3;
258  int icryX = id.ix()+column-1;
259  int icryY = id.iy()+row-1;
260  if ( EEDetId::validDetId(icryX, icryY, iz) ) {
261  EEDetId id3x3 = EEDetId(icryX, icryY, iz, EEDetId::XYMODE);
262  if ( hits->find(id3x3) != hits->end() ) {
263  float neighbourEnergy = hits->find(id3x3)->energy();
264  e3x3 += neighbourEnergy;
265  if ( neighbourEnergy > xval ) isSeed = false;
266  }
267  }
268  }
269 
270  // find the jitter of the seed
271  float jitter = -999.;
272  if ( isSeed ) {
273  if ( uhits.isValid() ) {
274  if ( uhits->find(id) != uhits->end() ) {
275  jitter = uhits->find(id)->jitter();
276  }
277  }
278  }
279 
280  if ( isSeed && e3x3 >= threshold_ && jitter > minJitter_ && jitter < maxJitter_ ) {
281  if ( meSelMap_[ism-1] ) meSelMap_[ism-1]->Fill(xix, xiy, e3x3);
282  }
283 
284  if ( meSpectrum_[0][ism-1] ) meSpectrum_[0][ism-1]->Fill(xval);
285 
286  if ( isSeed && xval >= threshold_ && jitter > minJitter_ && jitter < maxJitter_ ) {
287  if ( meSpectrum_[1][ism-1] ) meSpectrum_[1][ism-1]->Fill(e3x3);
288  }
289 
290  }
291 
292  } else {
293 
294  edm::LogWarning("EECosmicTask") << EcalRecHitCollection_ << " not available";
295 
296  }
297 
298 }
#define LogDebug(id)
int i
Definition: DBlmapReader.cc:9
int ix() const
Definition: EEDetId.h:71
edm::InputTag EcalRawDataCollection_
Definition: EECosmicTask.h:68
static const int XYMODE
Definition: EEDetId.h:316
std::vector< T >::const_iterator const_iterator
static bool validDetId(int crystal_ix, int crystal_iy, int iz)
Definition: EEDetId.cc:562
void Fill(long long x)
edm::InputTag EcalUncalibratedRecHitCollection_
Definition: EECosmicTask.h:69
static int iSM(const int ism, const EcalSubdetector subdet)
Definition: Numbers.cc:216
MonitorElement * meSelMap_[18]
Definition: EECosmicTask.h:72
edm::InputTag EcalRecHitCollection_
Definition: EECosmicTask.h:70
bool isValid() const
Definition: HandleBase.h:76
double maxJitter_
Definition: EECosmicTask.h:78
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:359
void setup(void)
Setup.
Definition: EECosmicTask.cc:95
MonitorElement * meSpectrum_[2][18]
Definition: EECosmicTask.h:74
double minJitter_
Definition: EECosmicTask.h:77
static EcalSubdetector subDet(const EBDetId &id)
Definition: Numbers.cc:130
int ism(int ieta, int iphi)
Definition: EcalPyUtils.cc:47
double threshold_
Definition: EECosmicTask.h:76
void EECosmicTask::beginJob ( void  )
protectedvirtual

BeginJob.

Reimplemented from edm::EDAnalyzer.

Definition at line 62 of file EECosmicTask.cc.

References dqmStore_, ievt_, prefixME_, DQMStore::rmdir(), and DQMStore::setCurrentFolder().

62  {
63 
64  ievt_ = 0;
65 
66  if ( dqmStore_ ) {
67  dqmStore_->setCurrentFolder(prefixME_ + "/EECosmicTask");
68  dqmStore_->rmdir(prefixME_ + "/EECosmicTask");
69  }
70 
71 }
void rmdir(const std::string &fullpath)
Definition: DQMStore.cc:2296
std::string prefixME_
Definition: EECosmicTask.h:62
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:237
DQMStore * dqmStore_
Definition: EECosmicTask.h:60
void EECosmicTask::beginRun ( const edm::Run r,
const edm::EventSetup c 
)
protectedvirtual

BeginRun.

Reimplemented from edm::EDAnalyzer.

Definition at line 73 of file EECosmicTask.cc.

References Numbers::initGeometry(), mergeRuns_, and reset().

73  {
74 
75  Numbers::initGeometry(c, false);
76 
77  if ( ! mergeRuns_ ) this->reset();
78 
79 }
void reset(void)
Reset.
Definition: EECosmicTask.cc:85
static void initGeometry(const edm::EventSetup &setup, bool verbose=false)
Definition: Numbers.cc:43
void EECosmicTask::cleanup ( void  )
protected

Cleanup.

Definition at line 128 of file EECosmicTask.cc.

References dqmStore_, edm::getName(), i, init_, meSelMap_, meSpectrum_, prefixME_, DQMStore::removeElement(), and DQMStore::setCurrentFolder().

Referenced by endJob().

128  {
129 
130  if ( ! init_ ) return;
131 
132  if ( dqmStore_ ) {
133  dqmStore_->setCurrentFolder(prefixME_ + "/EECosmicTask");
134 
135  dqmStore_->setCurrentFolder(prefixME_ + "/EECosmicTask/Sel");
136  for (int i = 0; i < 18; i++) {
138  meSelMap_[i] = 0;
139  }
140 
141  dqmStore_->setCurrentFolder(prefixME_ + "/EECosmicTask/Spectrum");
142  for (int i = 0; i < 18; i++) {
143  if ( meSpectrum_[0][i] ) dqmStore_->removeElement( meSpectrum_[0][i]->getName() );
144  meSpectrum_[0][i] = 0;
145  if ( meSpectrum_[1][i] ) dqmStore_->removeElement( meSpectrum_[1][i]->getName() );
146  meSpectrum_[1][i] = 0;
147  }
148 
149  }
150 
151  init_ = false;
152 
153 }
int i
Definition: DBlmapReader.cc:9
std::string prefixME_
Definition: EECosmicTask.h:62
MonitorElement * meSelMap_[18]
Definition: EECosmicTask.h:72
void removeElement(const std::string &name)
Definition: DQMStore.cc:2338
std::string getName(Reflex::Type &cc)
Definition: ClassFiller.cc:18
MonitorElement * meSpectrum_[2][18]
Definition: EECosmicTask.h:74
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:237
DQMStore * dqmStore_
Definition: EECosmicTask.h:60
void EECosmicTask::endJob ( void  )
protectedvirtual

EndJob.

Reimplemented from edm::EDAnalyzer.

Definition at line 155 of file EECosmicTask.cc.

References cleanup(), enableCleanup_, and ievt_.

155  {
156 
157  edm::LogInfo("EECosmicTask") << "analyzed " << ievt_ << " events";
158 
159  if ( enableCleanup_ ) this->cleanup();
160 
161 }
bool enableCleanup_
Definition: EECosmicTask.h:64
void cleanup(void)
Cleanup.
void EECosmicTask::endRun ( const edm::Run r,
const edm::EventSetup c 
)
protectedvirtual

EndRun.

Reimplemented from edm::EDAnalyzer.

Definition at line 81 of file EECosmicTask.cc.

81  {
82 
83 }
void EECosmicTask::reset ( void  )
protected

Reset.

Definition at line 85 of file EECosmicTask.cc.

References i, meSelMap_, meSpectrum_, and MonitorElement::Reset().

Referenced by beginRun().

85  {
86 
87  for (int i = 0; i < 18; i++) {
88  if ( meSelMap_[i] ) meSelMap_[i]->Reset();
89  if ( meSpectrum_[0][i] ) meSpectrum_[0][i]->Reset();
90  if ( meSpectrum_[1][i] ) meSpectrum_[1][i]->Reset();
91  }
92 
93 }
int i
Definition: DBlmapReader.cc:9
MonitorElement * meSelMap_[18]
Definition: EECosmicTask.h:72
MonitorElement * meSpectrum_[2][18]
Definition: EECosmicTask.h:74
void Reset(void)
reset ME (ie. contents, errors, etc)
void EECosmicTask::setup ( void  )
protected

Setup.

Definition at line 95 of file EECosmicTask.cc.

References DQMStore::book1D(), DQMStore::bookProfile2D(), dqmStore_, trackerHits::histo, i, init_, Numbers::ix0EE(), Numbers::iy0EE(), meSelMap_, meSpectrum_, prefixME_, Numbers::sEE(), MonitorElement::setAxisTitle(), and DQMStore::setCurrentFolder().

Referenced by analyze().

95  {
96 
97  init_ = true;
98 
99  char histo[200];
100 
101  if ( dqmStore_ ) {
102  dqmStore_->setCurrentFolder(prefixME_ + "/EECosmicTask");
103 
104  dqmStore_->setCurrentFolder(prefixME_ + "/EECosmicTask/Sel");
105  for (int i = 0; i < 18; i++) {
106  sprintf(histo, "EECT energy sel %s", Numbers::sEE(i+1).c_str());
107  meSelMap_[i] = dqmStore_->bookProfile2D(histo, histo, 50, Numbers::ix0EE(i+1)+0., Numbers::ix0EE(i+1)+50., 50, Numbers::iy0EE(i+1)+0., Numbers::iy0EE(i+1)+50., 4096, 0., 4096., "s");
108  meSelMap_[i]->setAxisTitle("ix", 1);
109  if ( i+1 >= 1 && i+1 <= 9 ) meSelMap_[i]->setAxisTitle("101-ix", 1);
110  meSelMap_[i]->setAxisTitle("iy", 2);
111  meSelMap_[i]->setAxisTitle("energy (GeV)", 3);
112  }
113 
114  dqmStore_->setCurrentFolder(prefixME_ + "/EECosmicTask/Spectrum");
115  for (int i = 0; i < 18; i++) {
116  sprintf(histo, "EECT 1x1 energy spectrum %s", Numbers::sEE(i+1).c_str());
117  meSpectrum_[0][i] = dqmStore_->book1D(histo, histo, 100, 0., 1.5);
118  meSpectrum_[0][i]->setAxisTitle("energy (GeV)", 1);
119  sprintf(histo, "EECT 3x3 energy spectrum %s", Numbers::sEE(i+1).c_str());
120  meSpectrum_[1][i] = dqmStore_->book1D(histo, histo, 100, 0., 1.5);
121  meSpectrum_[1][i]->setAxisTitle("energy (GeV)", 1);
122  }
123 
124  }
125 
126 }
int i
Definition: DBlmapReader.cc:9
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:519
static int iy0EE(const int ism)
Definition: Numbers.cc:964
static std::string sEE(const int ism)
Definition: Numbers.cc:199
tuple histo
Definition: trackerHits.py:12
std::string prefixME_
Definition: EECosmicTask.h:62
MonitorElement * meSelMap_[18]
Definition: EECosmicTask.h:72
MonitorElement * meSpectrum_[2][18]
Definition: EECosmicTask.h:74
static int ix0EE(const int ism)
Definition: Numbers.cc:946
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:237
DQMStore * dqmStore_
Definition: EECosmicTask.h:60
MonitorElement * bookProfile2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, int nchZ, double lowZ, double highZ, const char *option="s")
Definition: DQMStore.cc:977

Member Data Documentation

DQMStore* EECosmicTask::dqmStore_
private

Definition at line 60 of file EECosmicTask.h.

Referenced by beginJob(), cleanup(), EECosmicTask(), and setup().

edm::InputTag EECosmicTask::EcalRawDataCollection_
private

Definition at line 68 of file EECosmicTask.h.

Referenced by analyze(), and EECosmicTask().

edm::InputTag EECosmicTask::EcalRecHitCollection_
private

Definition at line 70 of file EECosmicTask.h.

Referenced by analyze(), and EECosmicTask().

edm::InputTag EECosmicTask::EcalUncalibratedRecHitCollection_
private

Definition at line 69 of file EECosmicTask.h.

Referenced by analyze(), and EECosmicTask().

bool EECosmicTask::enableCleanup_
private

Definition at line 64 of file EECosmicTask.h.

Referenced by EECosmicTask(), and endJob().

int EECosmicTask::ievt_
private

Definition at line 58 of file EECosmicTask.h.

Referenced by analyze(), beginJob(), and endJob().

bool EECosmicTask::init_
private

Definition at line 80 of file EECosmicTask.h.

Referenced by analyze(), cleanup(), EECosmicTask(), and setup().

double EECosmicTask::maxJitter_
private

Definition at line 78 of file EECosmicTask.h.

Referenced by analyze(), and EECosmicTask().

bool EECosmicTask::mergeRuns_
private

Definition at line 66 of file EECosmicTask.h.

Referenced by beginRun(), and EECosmicTask().

MonitorElement* EECosmicTask::meSelMap_[18]
private

Definition at line 72 of file EECosmicTask.h.

Referenced by analyze(), cleanup(), EECosmicTask(), reset(), and setup().

MonitorElement* EECosmicTask::meSpectrum_[2][18]
private

Definition at line 74 of file EECosmicTask.h.

Referenced by analyze(), cleanup(), EECosmicTask(), reset(), and setup().

double EECosmicTask::minJitter_
private

Definition at line 77 of file EECosmicTask.h.

Referenced by analyze(), and EECosmicTask().

std::string EECosmicTask::prefixME_
private

Definition at line 62 of file EECosmicTask.h.

Referenced by beginJob(), cleanup(), EECosmicTask(), and setup().

double EECosmicTask::threshold_
private

Definition at line 76 of file EECosmicTask.h.

Referenced by analyze(), and EECosmicTask().