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
DTAlbertoBenvenutiTask Class Reference

#include <DTAlbertoBenvenutiTask.h>

Inheritance diagram for DTAlbertoBenvenutiTask:
edm::EDAnalyzer

Public Member Functions

 DTAlbertoBenvenutiTask (const edm::ParameterSet &ps)
 Constructor. More...
 
virtual ~DTAlbertoBenvenutiTask ()
 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 ()
 BeginJob. More...
 
void beginRun (const edm::Run &, const edm::EventSetup &)
 
void bookHistos (const DTWireId dtWire)
 Book the ME. More...
 
void endJob ()
 Endjob. More...
 
- Protected Member Functions inherited from edm::EDAnalyzer
CurrentProcessingContext const * currentContext () const
 

Private Attributes

bool debug
 
float kFactor
 
edm::Handle< LTCDigiCollectionltcdigis
 
int maxTDCHits
 
edm::ESHandle< DTGeometrymuonGeom
 
int nevents
 
std::string outputFile
 
edm::ParameterSet parameters
 
edm::ESHandle< DTT0t0Map
 
std::map< DTWireId, TH1F * > TBMap
 
int tMax
 no needs to be precise. Value from PSets will always be used More...
 
float tTrig
 tTrig from the DB More...
 
edm::ESHandle< DTTtrigtTrigMap
 
float tTrigRMS
 

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)
 
static void prevalidate (ConfigurationDescriptions &)
 

Detailed Description

Definition at line 39 of file DTAlbertoBenvenutiTask.h.

Constructor & Destructor Documentation

DTAlbertoBenvenutiTask::DTAlbertoBenvenutiTask ( const edm::ParameterSet ps)

Constructor.

Definition at line 49 of file DTAlbertoBenvenutiTask.cc.

References gather_cfg::cout, debug, edm::ParameterSet::getUntrackedParameter(), download_sqlite_cfg::outputFile, and Parameters::parameters.

49  {
50 
51  debug = ps.getUntrackedParameter<bool>("debug", false);
52  if(debug)
53  cout<<"[DTAlbertoBenvenutiTask]: Constructor"<<endl;
54 
55  outputFile = ps.getUntrackedParameter<string>("outputFile", "DTDigiSources.root");
56  maxTDCHits = ps.getUntrackedParameter<int>("maxTDCHits",1000);
57 
58  // tMax (not yet from the DB)
59  tMax = parameters.getParameter<int>("defaultTmax");
60 
61  parameters = ps;
62 
63 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
int tMax
no needs to be precise. Value from PSets will always be used
tuple cout
Definition: gather_cfg.py:121
DTAlbertoBenvenutiTask::~DTAlbertoBenvenutiTask ( )
virtual

Destructor.

Definition at line 66 of file DTAlbertoBenvenutiTask.cc.

References gather_cfg::cout, debug, and nevents.

66  {
67 
68  if(debug)
69  cout << "DTAlbertoBenvenutiTask: analyzed " << nevents << " events" << endl;
70 
71 }
tuple cout
Definition: gather_cfg.py:121

Member Function Documentation

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

Analyze.

Implements edm::EDAnalyzer.

Definition at line 231 of file DTAlbertoBenvenutiTask.cc.

References bookHistos(), DTTimeUnits::counts, debug, edm::EventSetup::get(), edm::Event::getByLabel(), edm::Event::getByType(), nevents, Parameters::parameters, edm::second(), and crabStatusFromReport::statusMap.

231  {
232 
233  nevents++;
234  if (nevents%1000 == 0 && debug) {}
235 
237  e.getByLabel("dtunpacker", dtdigis);
238 
239  if ( !parameters.getUntrackedParameter<bool>("localrun", true) ) e.getByType(ltcdigis);
240 
241  bool checkNoisyChannels = parameters.getUntrackedParameter<bool>("checkNoisyChannels",false);
243  if(checkNoisyChannels) {
244  // Get the map of noisy channels
245  c.get<DTStatusFlagRcd>().get(statusMap);
246  }
247 
248  int tdcCount = 0;
250  for (dtLayerId_It=dtdigis->begin(); dtLayerId_It!=dtdigis->end(); ++dtLayerId_It){
251  for (DTDigiCollection::const_iterator digiIt = ((*dtLayerId_It).second).first;
252  digiIt!=((*dtLayerId_It).second).second; ++digiIt){
253  tdcCount++;
254  }
255  }
256 
257  bool isSyncNoisy = false;
258  if (tdcCount > maxTDCHits) isSyncNoisy = true;
259 
260  for (dtLayerId_It=dtdigis->begin(); dtLayerId_It!=dtdigis->end(); ++dtLayerId_It){
261  for (DTDigiCollection::const_iterator digiIt = ((*dtLayerId_It).second).first;
262  digiIt!=((*dtLayerId_It).second).second; ++digiIt){
263 
264  bool isNoisy = false;
265  bool isFEMasked = false;
266  bool isTDCMasked = false;
267  bool isTrigMask = false;
268  bool isDead = false;
269  bool isNohv = false;
270  const DTWireId wireId(((*dtLayerId_It).first), (*digiIt).wire());
271  if(checkNoisyChannels) {
272  statusMap->cellStatus(wireId, isNoisy, isFEMasked, isTDCMasked, isTrigMask, isDead, isNohv);
273  }
274 
275  // for clearness..
276 // const DTSuperLayerId dtSLId = ((*dtLayerId_It).first).superlayerId();
277 // uint32_t indexSL = dtSLId.rawId();
278 // const DTChamberId dtChId = dtSLId.chamberId();
279 // uint32_t indexCh = dtChId.rawId();
280 // int layer_number=((*dtLayerId_It).first).layer();
281 // int superlayer_number=dtSLId.superlayer();
282 // const DTLayerId dtLId = (*dtLayerId_It).first;
283 // uint32_t indexL = dtLId.rawId();
284 
285  float t0; float t0RMS;
286  int tdcTime = (*digiIt).countsTDC();
287 
288  if (parameters.getParameter<bool>("performPerWireT0Calibration")) {
289  const DTWireId dtWireId(((*dtLayerId_It).first), (*digiIt).wire());
290  t0Map->get(dtWireId, t0, t0RMS, DTTimeUnits::counts) ;
291  tdcTime += int(round(t0));
292  }
293 
294  // avoid to fill TB with noise
295  if ((!isNoisy ) && (!isSyncNoisy)) {
296  // TimeBoxes per wire
297  if (TBMap.find(wireId) == TBMap.end()){
298  bookHistos(wireId);
299  TBMap[wireId]->Fill(tdcTime);
300  }
301  else
302  TBMap[wireId]->Fill(tdcTime);
303  }
304  }
305  }
306 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
bool getByType(Handle< PROD > &result) const
Definition: Event.h:398
U second(std::pair< T, U > const &p)
edm::ESHandle< DTT0 > t0Map
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
edm::Handle< LTCDigiCollection > ltcdigis
const T & get() const
Definition: EventSetup.h:55
std::vector< DigiType >::const_iterator const_iterator
std::map< DTWireId, TH1F * > TBMap
void bookHistos(const DTWireId dtWire)
Book the ME.
void DTAlbertoBenvenutiTask::beginJob ( void  )
protectedvirtual

BeginJob.

Reimplemented from edm::EDAnalyzer.

Definition at line 131 of file DTAlbertoBenvenutiTask.cc.

References gather_cfg::cout, debug, and nevents.

131  {
132 
133  if(debug)
134  cout<<"[DTAlbertoBenvenutiTask]: BeginJob"<<endl;
135 
136  nevents = 0;
137 
138 }
tuple cout
Definition: gather_cfg.py:121
void DTAlbertoBenvenutiTask::beginRun ( const edm::Run ,
const edm::EventSetup context 
)
protectedvirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 142 of file DTAlbertoBenvenutiTask.cc.

References edm::EventSetup::get(), and Parameters::parameters.

142  {
143 
144  // Get the geometry
145  context.get<MuonGeometryRecord>().get(muonGeom);
146 
147  // tTrig
148  if (parameters.getUntrackedParameter<bool>("readDB", true))
149  context.get<DTTtrigRcd>().get(tTrigMap);
150 
151  // t0s
152  if (parameters.getParameter<bool>("performPerWireT0Calibration"))
153  context.get<DTT0Rcd>().get(t0Map);
154 
155 }
edm::ESHandle< DTGeometry > muonGeom
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::ESHandle< DTT0 > t0Map
edm::ESHandle< DTTtrig > tTrigMap
const T & get() const
Definition: EventSetup.h:55
Definition: DTT0Rcd.h:9
void DTAlbertoBenvenutiTask::bookHistos ( const DTWireId  dtWire)
protected

Book the ME.

Definition at line 158 of file DTAlbertoBenvenutiTask.cc.

References DTSuperLayerId::chamberId(), DTTimeUnits::counts, gather_cfg::cout, debug, DTLayerId::layer(), DTWireId::layerId(), Parameters::parameters, DTChamberId::sector(), DTChamberId::station(), relativeConstraints::station, DTSuperLayerId::superlayer(), DTLayerId::superlayerId(), and DTChamberId::wheel().

158  {
159 
160  if (debug) cout<<"[DTAlbertoBenvenutiTask]: booking"<<endl;
161 
162  stringstream wheel; wheel << dtWire.layerId().superlayerId().chamberId().wheel();
163  stringstream station; station << dtWire.layerId().superlayerId().chamberId().station();
164  stringstream sector; sector << dtWire.layerId().superlayerId().chamberId().sector();
165 
166  // Loop over all the chambers
167  vector<DTChamber*>::const_iterator ch_it = muonGeom->chambers().begin();
168  vector<DTChamber*>::const_iterator ch_end = muonGeom->chambers().end();
169  // Loop over the SLs
170  for (; ch_it != ch_end; ++ch_it) {
171  DTChamberId ch = (*ch_it)->id();
172  if(ch == dtWire.layerId().superlayerId().chamberId()){
173  vector<const DTSuperLayer*>::const_iterator sl_it = (*ch_it)->superLayers().begin();
174  vector<const DTSuperLayer*>::const_iterator sl_end = (*ch_it)->superLayers().end();
175  // Loop over the SLs
176  for(; sl_it != sl_end; ++sl_it) {
177  DTSuperLayerId sl = (*sl_it)->id();
178  stringstream superLayer; superLayer << sl.superlayer();
179  vector<const DTLayer*>::const_iterator l_it = (*sl_it)->layers().begin();
180  vector<const DTLayer*>::const_iterator l_end = (*sl_it)->layers().end();
181  // Loop over the Ls
182  for(; l_it != l_end; ++l_it) {
183  DTLayerId layerId = (*l_it)->id();
184  stringstream layer; layer << layerId.layer();
185  const int firstWire = muonGeom->layer(layerId)->specificTopology().firstChannel();
186  const int lastWire = muonGeom->layer(layerId)->specificTopology().lastChannel();
187  // Loop overt the wires
188  for(int wr=firstWire; wr -lastWire <= 0; wr++) {
189 
190  stringstream wire; wire << wr;
191  DTWireId wrId(layerId, wr);
192 
193  string histoTag = "TimeBox";
194  string histoName = histoTag
195  + "_W" + wheel.str()
196  + "_St" + station.str()
197  + "_Sec" + sector.str()
198  + "_SL" + superLayer.str()
199  + "_L" + layer.str()
200  + "_wire" + wire.str();
201 
202  if (debug) cout<<"[DTAlbertoBenvenutiTask]: histoName "<<histoName<<endl;
203 
204  if ( parameters.getUntrackedParameter<bool>("readDB", false) )
205  // ttrig and rms are TDC counts
206  tTrigMap->get(dtWire.layerId().superlayerId(), tTrig, tTrigRMS, kFactor,
208  else tTrig = parameters.getParameter<int>("defaultTtrig");
209 
210  string histoTitle = histoName + " (TDC Counts)";
211  int timeBoxGranularity = parameters.getUntrackedParameter<int>("timeBoxGranularity",4);
212 
213  if (!parameters.getUntrackedParameter<bool>("readDB", true)) {
214  int maxTDCCounts = 6400 * parameters.getUntrackedParameter<int>("tdcRescale", 1);
215  TH1F *TB = new TH1F(histoName.c_str(),histoTitle.c_str(), maxTDCCounts/timeBoxGranularity, 0, maxTDCCounts);
216  TBMap[wrId] = TB;
217  }
218  else {
219  TH1F *TB = new TH1F(histoName.c_str(),histoTitle.c_str(), 2*tMax/timeBoxGranularity, tTrig-tMax, tTrig+2*tMax);
220  TBMap[wrId] = TB;
221  }
222 
223  } // loopover wires
224  } // loop over Ls
225  } // loop over SLs
226  } // if is the right chamber to book
227  } // loop over chambers
228 }
edm::ESHandle< DTGeometry > muonGeom
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
float tTrig
tTrig from the DB
DTChamberId chamberId() const
Return the corresponding ChamberId.
int layer() const
Return the layer number.
Definition: DTLayerId.h:55
DTSuperLayerId superlayerId() const
Return the corresponding SuperLayerId.
Definition: DTLayerId.h:61
int superlayer() const
Return the superlayer number (deprecated method name)
edm::ESHandle< DTTtrig > tTrigMap
int tMax
no needs to be precise. Value from PSets will always be used
std::map< DTWireId, TH1F * > TBMap
DTLayerId layerId() const
Return the corresponding LayerId.
Definition: DTWireId.h:64
int sector() const
Definition: DTChamberId.h:63
tuple cout
Definition: gather_cfg.py:121
int station() const
Return the station number.
Definition: DTChamberId.h:53
int wheel() const
Return the wheel number.
Definition: DTChamberId.h:47
void DTAlbertoBenvenutiTask::endJob ( void  )
protectedvirtual

Endjob.

Reimplemented from edm::EDAnalyzer.

Definition at line 74 of file DTAlbertoBenvenutiTask.cc.

References alignmentValidation::c1, gather_cfg::cout, debug, convertXMLtoSQLite_cfg::fileName, python.multivaluedict::map(), and relativeConstraints::station.

74  {
75 
76  if(debug)
77  cout<<"[DTAlbertoBenvenutiTask] endjob called!"<<endl;
78 
79  map< DTChamberId, vector<TH1F*> > TBMap_perChamber;
80 
81  for(map<DTWireId, TH1F* >::const_iterator wHisto = TBMap.begin();
82  wHisto != TBMap.end();
83  wHisto++) {
84  DTChamberId chId = (*wHisto).first.layerId().superlayerId().chamberId();
85  TBMap_perChamber[chId].push_back((*wHisto).second);
86  }
87 
88 
89  for(map<DTChamberId, vector<TH1F*> >::const_iterator Histo = TBMap_perChamber.begin();
90  Histo != TBMap_perChamber.end();
91  Histo++) {
92  stringstream station; station << (*Histo).first.station();
93  stringstream sector; sector << (*Histo).first.sector();
94  stringstream wheel; wheel << (*Histo).first.wheel();
95 
96  string fileTag = "TimeBoxes";
97  string fileName = fileTag
98  + "_W" + wheel.str()
99  + "_Sec" + sector.str()
100  + "_St" + station.str()
101  + ".ps";
102 
103  TPostScript psFile(fileName.c_str(),111);
104  psFile.Range(20,26);
105  int counter = 0;
106  TCanvas c1("c1","",600,780);
107  c1.Divide(4,4);
108  psFile.NewPage();
109 
110  cout<<"[DTAlbertoBenvenutiTask] filling the file: "<<fileName<<endl;
111  for(vector<TH1F*>::const_iterator tbHisto = (*Histo).second.begin();
112  tbHisto != (*Histo).second.end();
113  tbHisto++) {
114  counter++;
115  c1.cd(counter);
116  (*tbHisto)->Draw();
117  if(counter%16 == 0 && counter>=16){
118  c1.Update();
119  psFile.NewPage();
120  c1.Clear();
121  c1.Divide(4,4);
122  counter=0;
123  }
124  } // loop over TB histos (divided per chamber)
125 
126  } //loop over the chambers
127 
128 }
std::map< DTWireId, TH1F * > TBMap
tuple cout
Definition: gather_cfg.py:121

Member Data Documentation

bool DTAlbertoBenvenutiTask::debug
private

Definition at line 67 of file DTAlbertoBenvenutiTask.h.

float DTAlbertoBenvenutiTask::kFactor
private

Definition at line 77 of file DTAlbertoBenvenutiTask.h.

edm::Handle<LTCDigiCollection> DTAlbertoBenvenutiTask::ltcdigis
private

Definition at line 79 of file DTAlbertoBenvenutiTask.h.

int DTAlbertoBenvenutiTask::maxTDCHits
private

Definition at line 72 of file DTAlbertoBenvenutiTask.h.

edm::ESHandle<DTGeometry> DTAlbertoBenvenutiTask::muonGeom
private

Definition at line 83 of file DTAlbertoBenvenutiTask.h.

int DTAlbertoBenvenutiTask::nevents
private

Definition at line 68 of file DTAlbertoBenvenutiTask.h.

std::string DTAlbertoBenvenutiTask::outputFile
private

Definition at line 88 of file DTAlbertoBenvenutiTask.h.

edm::ParameterSet DTAlbertoBenvenutiTask::parameters
private
edm::ESHandle<DTT0> DTAlbertoBenvenutiTask::t0Map
private

Definition at line 86 of file DTAlbertoBenvenutiTask.h.

std::map<DTWireId, TH1F*> DTAlbertoBenvenutiTask::TBMap
private

Definition at line 90 of file DTAlbertoBenvenutiTask.h.

int DTAlbertoBenvenutiTask::tMax
private

no needs to be precise. Value from PSets will always be used

Definition at line 71 of file DTAlbertoBenvenutiTask.h.

float DTAlbertoBenvenutiTask::tTrig
private

tTrig from the DB

Definition at line 75 of file DTAlbertoBenvenutiTask.h.

edm::ESHandle<DTTtrig> DTAlbertoBenvenutiTask::tTrigMap
private

Definition at line 85 of file DTAlbertoBenvenutiTask.h.

float DTAlbertoBenvenutiTask::tTrigRMS
private

Definition at line 76 of file DTAlbertoBenvenutiTask.h.