CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
SiStripCommissioningSource Class Reference

#include <SiStripCommissioningSource.h>

Inheritance diagram for SiStripCommissioningSource:
edm::EDAnalyzer edm::EDConsumerBase

Public Types

typedef std::map< unsigned int, CommissioningTask * > TaskMap
 
typedef std::vector< CommissioningTask * > VecOfTasks
 
typedef std::vector< VecOfTasksVecOfVecOfTasks
 
- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void beginRun (edm::Run const &, const edm::EventSetup &) override
 
void endJob () override
 
 SiStripCommissioningSource (const edm::ParameterSet &)
 
 ~SiStripCommissioningSource () override
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
 ~EDAnalyzer () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void clearCablingTasks ()
 
void clearTasks ()
 
void createCablingTasks ()
 
void createRunNumber ()
 
void createTask (const SiStripEventSummary *const, const edm::EventSetup &)
 
void createTasks (sistrip::RunType, const edm::EventSetup &)
 
void directory (std::stringstream &, uint32_t run_number=0)
 
DQMStore *const dqm (std::string method="") const
 
void fillCablingHistos (const SiStripEventSummary *const, const edm::DetSetVector< SiStripRawDigi > &)
 
void fillHistos (const SiStripEventSummary *const, const edm::DetSetVector< SiStripRawDigi > &, const edm::DetSetVector< SiStripRawDigi > &=edm::DetSetVector< SiStripRawDigi >(), const edmNew::DetSetVector< SiStripCluster > &=edmNew::DetSetVector< SiStripCluster >())
 
void remove ()
 
 SiStripCommissioningSource ()=delete
 

Private Attributes

std::string base_
 
bool cablingTask_
 
TaskMap cablingTasks_
 
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clustersToken_
 
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiFineDelaySelectionToken_
 
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiReorderedToken_
 
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiScopeModeToken_
 
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiVirginRawToken_
 
DQMStoredqm_
 
SiStripFecCablingfecCabling_
 
SiStripFedCablingfedCabling_
 
std::string filename_
 
std::string inputClusterLabel_
 
std::string inputModuleLabel_
 
std::string inputModuleLabelAlt_
 
std::string inputModuleLabelSummary_
 
edm::EDGetTokenT< SiStripEventSummaryinputModuleSummaryToken_
 
bool isSpy_
 
edm::ParameterSet parameters_
 
std::string partitionName_
 
uint32_t run_
 
sistrip::RunType task_
 
std::string taskConfigurable_
 
VecOfVecOfTasks tasks_
 
bool tasksExist_
 
int32_t time_
 
int updateFreq_
 
std::string view_
 

Additional Inherited Members

- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 29 of file SiStripCommissioningSource.h.

Member Typedef Documentation

typedef std::map<unsigned int, CommissioningTask*> SiStripCommissioningSource::TaskMap

Map of task objects, identified through FedChanelId

Definition at line 34 of file SiStripCommissioningSource.h.

Definition at line 35 of file SiStripCommissioningSource.h.

Definition at line 36 of file SiStripCommissioningSource.h.

Constructor & Destructor Documentation

SiStripCommissioningSource::SiStripCommissioningSource ( const edm::ParameterSet pset)

Definition at line 55 of file SiStripCommissioningSource.cc.

References clustersToken_, digiFineDelaySelectionToken_, digiReorderedToken_, digiScopeModeToken_, digiVirginRawToken_, inputClusterLabel_, inputModuleLabel_, inputModuleLabelAlt_, inputModuleLabelSummary_, inputModuleSummaryToken_, isSpy_, LogTrace, sistrip::mlDqmSource_, and tasks_.

55  :
56  dqm_(nullptr),
57  fedCabling_(nullptr),
58  fecCabling_(nullptr),
59  inputModuleLabel_( pset.getParameter<std::string>( "InputModuleLabel" ) ),
60  inputModuleLabelAlt_(pset.existsAs<std::string>("InputModuleLabelAlt")?pset.getParameter<std::string>( "InputModuleLabelAlt" ):""),
61  inputModuleLabelSummary_( pset.getParameter<std::string>( "SummaryInputModuleLabel" ) ),
62  inputClusterLabel_(pset.existsAs<std::string>("InputClusterLabel") ? pset.getParameter<std::string>( "InputClusterLabel" ) :""),
64  run_(0),
65  partitionName_(pset.existsAs<std::string>("PartitionName") ? pset.getParameter<std::string>("PartitionName") : ""),
66  time_(0),
67  isSpy_(pset.existsAs<bool>("isSpy")?pset.getParameter<bool>("isSpy"):false),
68  taskConfigurable_( pset.getUntrackedParameter<std::string>("CommissioningTask","UNDEFINED") ),
70  tasks_(),
71  cablingTasks_(),
72  tasksExist_(false),
73  cablingTask_(false),
74  updateFreq_( pset.getUntrackedParameter<int>("HistoUpdateFreq",1) ),
75  base_(""),
76  view_( pset.getUntrackedParameter<std::string>("View", "Default") ),
77  parameters_(pset)
78 {
79  inputModuleSummaryToken_ = consumes<SiStripEventSummary>(edm::InputTag(inputModuleLabelSummary_) );
80  digiVirginRawToken_ = mayConsume<edm::DetSetVector<SiStripRawDigi> >(edm::InputTag(inputModuleLabel_,"VirginRaw") );
81  digiFineDelaySelectionToken_ = mayConsume<edm::DetSetVector<SiStripRawDigi> >(edm::InputTag(inputModuleLabel_,"FineDelaySelection") );
82  digiReorderedToken_ = mayConsume<edm::DetSetVector<SiStripRawDigi> >(edm::InputTag(inputModuleLabel_,"Reordered") );
84  if(not isSpy_)
85  digiScopeModeToken_ = mayConsume<edm::DetSetVector<SiStripRawDigi> >(edm::InputTag(inputModuleLabel_,"ScopeMode") );
86  else{
87  digiScopeModeToken_ = mayConsume<edm::DetSetVector<SiStripRawDigi> >(edm::InputTag(inputModuleLabelAlt_,"ScopeRawDigis") );
88  clustersToken_ = mayConsume<edmNew::DetSetVector<SiStripCluster> >(edm::InputTag(inputClusterLabel_));
89  }
92  << "[SiStripCommissioningSource::" << __func__ << "]"
93  << " Constructing object...";
94  tasks_.clear();
95  tasks_.resize( 1024, VecOfTasks(96,static_cast<CommissioningTask*>(nullptr)) );
96 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiReorderedToken_
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:161
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiVirginRawToken_
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clustersToken_
static const char mlDqmSource_[]
std::vector< CommissioningTask * > VecOfTasks
static const char dqmSourceFileName_[]
#define LogTrace(id)
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiFineDelaySelectionToken_
edm::EDGetTokenT< SiStripEventSummary > inputModuleSummaryToken_
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiScopeModeToken_
SiStripCommissioningSource::~SiStripCommissioningSource ( )
override

Definition at line 100 of file SiStripCommissioningSource.cc.

References LogTrace, and sistrip::mlDqmSource_.

100  {
102  << "[SiStripCommissioningSource::" << __func__ << "]"
103  << " Destructing object...";
104 }
static const char mlDqmSource_[]
#define LogTrace(id)
SiStripCommissioningSource::SiStripCommissioningSource ( )
privatedelete

Private default constructor.

Member Function Documentation

void SiStripCommissioningSource::analyze ( const edm::Event event,
const edm::EventSetup setup 
)
override

Definition at line 272 of file SiStripCommissioningSource.cc.

References sistrip::APV_LATENCY, sistrip::APV_TIMING, cablingTask_, sistrip::CALIBRATION, sistrip::CALIBRATION_DECO, sistrip::CALIBRATION_SCAN, sistrip::CALIBRATION_SCAN_DECO, clustersToken_, createRunNumber(), createTask(), sistrip::DAQ_SCOPE_MODE, digiFineDelaySelectionToken_, digiReorderedToken_, digiScopeModeToken_, digiVirginRawToken_, edm::EventID::event(), sistrip::FAST_CABLING, sistrip::FED_CABLING, sistrip::FED_SCOPE_MODE, sistrip::FED_TIMING, sistrip::FED_VIRGIN_RAW, SiStripEnumsAndStrings::fedReadoutMode(), SiStripEventSummary::fedReadoutMode(), fillCablingHistos(), fillHistos(), sistrip::FINE_DELAY, edm::Event::getByToken(), edm::EventBase::id(), inputClusterLabel_, inputModuleLabelAlt_, inputModuleSummaryToken_, isSpy_, edm::HandleBase::isValid(), sistrip::mlDqmSource_, sistrip::NOISE, SiStripEventSummary::nullParams(), sistrip::OPTO_SCAN, sistrip::PEDESTALS, sistrip::PEDS_FULL_NOISE, sistrip::PEDS_ONLY, edm::Handle< T >::product(), edm::EventID::run(), run_, SiStripEnumsAndStrings::runType(), SiStripEventSummary::runType(), GeneralSetup::setup(), heppy_report::summary, protons_cff::t, task_, tasks_, tasksExist_, protons_cff::time, time_, sistrip::UNDEFINED_RUN_TYPE, sistrip::UNKNOWN_RUN_TYPE, updateFreq_, findQualityFiles::v, and sistrip::VPSP_SCAN.

273  {
274 
275  // Retrieve commissioning information from "event summary"
277  // event.getByLabel( inputModuleLabelSummary_, summary );
278  event.getByToken( inputModuleSummaryToken_,summary );
279 
280  // Check if EventSummary has info attached
281  if ( ( summary->runType() == sistrip::UNDEFINED_RUN_TYPE ||
282  summary->runType() == sistrip::UNKNOWN_RUN_TYPE ) &&
283  summary->nullParams() ) {
285  << "[SiStripCommissioningSource::" << __func__ << "]"
286  << " Unknown/undefined RunType and NULL parameter values!"
287  << " It may be that the 'trigger FED' object was not found!";
288  }
289 
290  // Check if need to rebuild FED/FEC cabling objects for connection run
291  //cablingForConnectionRun( summary->runType() ); //@@ do not use!
292 
293  // Extract run number and forward to client
294  if ( event.id().run() != run_ ) {
295  run_ = event.id().run();
296  createRunNumber();
297  }
298 
299  // Coarse event rate counter
300  if ( !(event.id().event()%updateFreq_) ) {
301  std::stringstream ss;
302  ss << "[SiStripCommissioningSource::" << __func__ << "]"
303  << " The last " << updateFreq_
304  << " events were processed at a rate of ";
305  if ( time(nullptr) == time_ ) { ss << ">" << updateFreq_ << " Hz"; }
306  else { ss << (updateFreq_/(time(nullptr)-time_)) << " Hz"; }
307  edm::LogVerbatim(mlDqmSource_) << ss.str();
308  time_ = time(nullptr);
309  }
310 
311  // Create commissioning task objects
312  if ( !tasksExist_ ) { createTask( summary.product(), setup ); }
313  else {
314  for(auto& v: tasks_) {
315  for(auto& t: v) {
316  t->eventSetup(&setup);
317  }
318  }
319  }
320 
321  // Retrieve raw digis with mode appropriate to task
325 
326  if ( task_ == sistrip::DAQ_SCOPE_MODE ) { // scop-mode runs
327  if (not isSpy_ and summary->fedReadoutMode() == FED_VIRGIN_RAW ) { // if the readout is virgin raw just take the VR digis
328  event.getByToken( digiVirginRawToken_, raw );
329  }
330  else if ( not isSpy_ and summary->fedReadoutMode() == FED_SCOPE_MODE ) {
331  event.getByToken( digiScopeModeToken_, raw );
332  }
333  else if(isSpy_){ // spy case take both re-ordered and scope mode
334  event.getByToken(digiScopeModeToken_, rawAlt );
335  event.getByToken(digiReorderedToken_, raw );
336  if(not inputClusterLabel_.empty())
337  event.getByToken(clustersToken_,cluster);
338  }
339  else{
340  std::stringstream ss;
341  ss << "[SiStripCommissioningSource::" << __func__ << "]"
342  << " Requested DAQ_SCOPE_MODE but unknown FED"
343  << " readout mode retrieved from SiStripEventSummary: "
345  edm::LogWarning(mlDqmSource_) << ss.str();
346  }
347  } else if ( task_ == sistrip::FAST_CABLING ||
351  task_ == sistrip::OPTO_SCAN ) {
352  event.getByToken( digiScopeModeToken_, raw );
353  } else if ( task_ == sistrip::VPSP_SCAN ||
360  task_ == sistrip::NOISE ||
362  event.getByToken( digiVirginRawToken_, raw );
363  } else if ( task_ == sistrip::APV_LATENCY ||
365  event.getByToken( digiFineDelaySelectionToken_, raw );
366  } else {
367  std::stringstream ss;
368  ss << "[SiStripCommissioningSource::" << __func__ << "]"
369  << " Unknown CommissioningTask: "
371  << " Unable to establish FED readout mode and retrieve digi container!"
372  << " Check if SiStripEventSummary object is found/present in Event";
373  edm::LogWarning(mlDqmSource_) << ss.str();
374  return;
375  }
376 
377  // Check for NULL pointer to digi container
378  if ( not raw.isValid() ) {
379  std::stringstream ss;
380  ss << "[SiStripCommissioningSource::" << __func__ << "]" << std::endl
381  << " NULL pointer to DetSetVector!" << std::endl
382  << " Unable to fill histograms!";
383  edm::LogWarning(mlDqmSource_) << ss.str();
384  return;
385  }
386 
387  if(isSpy_ and not inputModuleLabelAlt_.empty() and not rawAlt.isValid()){
388  std::stringstream ss;
389  ss << "[SiStripCommissioningSource::" << __func__ << "]" << std::endl
390  << " NULL pointer to DetSetVector!" << std::endl
391  << " Unable to fill histograms!";
392  edm::LogWarning(mlDqmSource_) << ss.str();
393  return;
394  }
395 
396  if(isSpy_ and not inputClusterLabel_.empty() and not cluster.isValid()){
397  std::stringstream ss;
398  ss << "[SiStripCommissioningSource::" << __func__ << "]" << std::endl
399  << " NULL pointer to DetSetVector!" << std::endl
400  << " Unable to fill histograms!";
401  edm::LogWarning(mlDqmSource_) << ss.str();
402  return;
403  }
404 
405  if ( !cablingTask_ ) {
406  fillHistos( summary.product(), *raw, *rawAlt, *cluster);}
407  else { fillCablingHistos( summary.product(), *raw ); }
408 }
RunNumber_t run() const
Definition: EventID.h:39
EventNumber_t event() const
Definition: EventID.h:41
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiReorderedToken_
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiVirginRawToken_
void createTask(const SiStripEventSummary *const, const edm::EventSetup &)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clustersToken_
void fillHistos(const SiStripEventSummary *const, const edm::DetSetVector< SiStripRawDigi > &, const edm::DetSetVector< SiStripRawDigi > &=edm::DetSetVector< SiStripRawDigi >(), const edmNew::DetSetVector< SiStripCluster > &=edmNew::DetSetVector< SiStripCluster >())
static const char mlDqmSource_[]
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:2
static std::string runType(const sistrip::RunType &)
const sistrip::RunType & runType() const
void fillCablingHistos(const SiStripEventSummary *const, const edm::DetSetVector< SiStripRawDigi > &)
bool isValid() const
Definition: HandleBase.h:74
T const * product() const
Definition: Handle.h:74
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiFineDelaySelectionToken_
const sistrip::FedReadoutMode & fedReadoutMode() const
edm::EDGetTokenT< SiStripEventSummary > inputModuleSummaryToken_
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiScopeModeToken_
edm::EventID id() const
Definition: EventBase.h:59
static std::string fedReadoutMode(const sistrip::FedReadoutMode &)
void SiStripCommissioningSource::beginRun ( edm::Run const &  run,
const edm::EventSetup setup 
)
override

Definition at line 123 of file SiStripCommissioningSource.cc.

References base_, cablingTask_, clearCablingTasks(), clearTasks(), SiStripFecCabling::crates(), dir, dqm(), dqm_, fecCabling_, fedCabling_, SiStripFedCabling::fedIds(), edm::EventSetup::get(), LogDebug, LogTrace, sistrip::mlDqmSource_, Utilities::operator, edm::ESHandle< T >::product(), task_, tasksExist_, and sistrip::UNDEFINED_RUN_TYPE.

123  {
125  << "[SiStripCommissioningSource::" << __func__ << "]"
126  << " Configuring..." << std::endl;
127 
128  // ---------- DQM back-end interface ----------
129 
132  << "[SiStripCommissioningSource::" << __func__ << "]"
133  << " DQMStore service: "
134  << dqm_;
135  dqm(__func__);
136  dqm()->setVerbose(0);
137 
138  // ---------- Base directory ----------
139 
140  std::stringstream dir("");
141  base_ = dir.str();
142 
143  // ---------- FED and FEC cabling ----------
144 
146  setup.get<SiStripFedCablingRcd>().get( fed_cabling );
147  fedCabling_ = const_cast<SiStripFedCabling*>( fed_cabling.product() );
149  << "[SiStripCommissioningSource::" << __func__ << "]"
150  << "Initialized FED cabling. Number of FEDs is " << fedCabling_->fedIds().size();
151  fecCabling_ = new SiStripFecCabling( *fed_cabling );
152  if ( fecCabling_->crates().empty() ) {
153  std::stringstream ss;
154  ss << "[SiStripCommissioningSource::" << __func__ << "]"
155  << " Empty std::vector returned by FEC cabling object!"
156  << " Check if database connection failed...";
157  edm::LogWarning(mlDqmSource_) << ss.str();
158  }
159 
160  // ---------- Reset ----------
161 
162  tasksExist_ = false;
164  cablingTask_ = false;
165 
166  remove();
167 
169  clearTasks();
170 
171 }
#define LogDebug(id)
DQMStore *const dqm(std::string method="") const
static const char mlDqmSource_[]
const std::vector< SiStripFecCrate > & crates() const
FedsConstIterRange fedIds() const
#define LogTrace(id)
Contains cabling info at the device level, including DetId, APV pair numbers, hardware addresses...
T get() const
Definition: EventSetup.h:71
dbl *** dir
Definition: mlp_gen.cc:35
T const * product() const
Definition: ESHandle.h:86
void SiStripCommissioningSource::clearCablingTasks ( )
private

Definition at line 1114 of file SiStripCommissioningSource.cc.

References cablingTasks_.

Referenced by beginRun().

1114  {
1115  if ( cablingTasks_.empty() ) { return; }
1116  for ( TaskMap::iterator itask = cablingTasks_.begin(); itask != cablingTasks_.end(); itask++ ) {
1117  if ( itask->second ) { delete itask->second; }
1118  }
1119  cablingTasks_.clear();
1120 }
void SiStripCommissioningSource::clearTasks ( )
private

Definition at line 1124 of file SiStripCommissioningSource.cc.

References tasks_.

Referenced by beginRun().

1124  {
1125  if ( tasks_.empty() ) { return; }
1126  VecOfVecOfTasks::iterator ifed = tasks_.begin();
1127  for ( ; ifed != tasks_.end(); ifed++ ) {
1128  VecOfTasks::iterator ichan = ifed->begin();
1129  for ( ; ichan != ifed->end(); ichan++ ) {
1130  if ( *ichan ) { delete *ichan; *ichan = 0; }
1131  }
1132  ifed->resize(96,nullptr);
1133  }
1134  tasks_.resize(1024);
1135 }
void SiStripCommissioningSource::createCablingTasks ( )
private

Definition at line 815 of file SiStripCommissioningSource.cc.

References base_, cablingTasks_, SiStripFecCabling::crates(), TauDecayModes::dec, dir, dqm(), fecCabling_, sistrip::FED_CABLING, crabWrapper::key, LogTrace, sistrip::mlDqmSource_, callgraph::path, SiStripEnumsAndStrings::runType(), AlCaHLTBitMon_QueryRunRegistry::string, task_, sistrip::UNDEFINED_RUN_TYPE, and sistrip::UNKNOWN_RUN_TYPE.

Referenced by createTask().

815  {
816 
817  // Iterate through FEC cabling and create commissioning task objects
818  uint16_t booked = 0;
819  for ( std::vector<SiStripFecCrate>::const_iterator icrate = fecCabling_->crates().begin(); icrate != fecCabling_->crates().end(); icrate++ ) {
820  for ( std::vector<SiStripFec>::const_iterator ifec = icrate->fecs().begin(); ifec != icrate->fecs().end(); ifec++ ) {
821  for ( std::vector<SiStripRing>::const_iterator iring = ifec->rings().begin(); iring != ifec->rings().end(); iring++ ) {
822  for ( std::vector<SiStripCcu>::const_iterator iccu = iring->ccus().begin(); iccu != iring->ccus().end(); iccu++ ) {
823  for ( std::vector<SiStripModule>::const_iterator imodule = iccu->modules().begin(); imodule != iccu->modules().end(); imodule++ ) {
824 
825  // Build FEC key
826  SiStripFecKey path( icrate->fecCrate(),
827  ifec->fecSlot(),
828  iring->fecRing(),
829  iccu->ccuAddr(),
830  imodule->ccuChan() );
831 
832  // Check if FEC key is invalid
833  if ( !path.isValid() ) { continue; }
834 
835  // Set working directory prior to booking histograms
836  std::string dir = base_ + path.path();
837  dqm()->setCurrentFolder( dir );
838 
839  // Iterate through all APV pairs for this module
840  for ( uint16_t ipair = 0; ipair < imodule->nApvPairs(); ipair++ ) {
841 
842  // Retrieve active APV devices
843  SiStripModule::PairOfU16 apvs = imodule->activeApvPair( imodule->lldChannel(ipair) );
844 
845  // Create connection object to hold all relevant info
846  FedChannelConnection conn( icrate->fecCrate(),
847  ifec->fecSlot(),
848  iring->fecRing(),
849  iccu->ccuAddr(),
850  imodule->ccuChan(),
851  apvs.first,
852  apvs.second,
853  imodule->dcuId(),
854  imodule->detId(),
855  imodule->nApvPairs() );
856 
857  // Define key encoding control path
858  uint32_t key = SiStripFecKey( icrate->fecCrate(),
859  ifec->fecSlot(),
860  iring->fecRing(),
861  iccu->ccuAddr(),
862  imodule->ccuChan(),
863  imodule->lldChannel(ipair) ).key();
864 
865  // Check key is non zero
866  if ( !key ) {
868  << "[SiStripCommissioningSource::" << __func__ << "]"
869  << " Unexpected NULL value for FEC key!";
870  continue;
871  }
872 
873  // Create cabling task objects if not already existing
874  if ( cablingTasks_.find( key ) == cablingTasks_.end() ) {
875 
876  if ( task_ == sistrip::FED_CABLING ) {
877  cablingTasks_[key] = new FedCablingTask( dqm(), conn );
878  } else if ( task_ == sistrip::UNDEFINED_RUN_TYPE ) {
880  << "[SiStripCommissioningSource::" << __func__ << "]"
881  << " Undefined CommissioningTask"
882  << " Unable to create FedCablingTask object!";
883  } else if ( task_ == sistrip::UNKNOWN_RUN_TYPE ) {
885  << "[SiStripCommissioningSource::" << __func__ << "]"
886  << " Unknown CommissioningTask"
887  << " Unable to create FedCablingTask object!";
888  } else {
890  << "[SiStripCommissioningSource::" << __func__ << "]"
891  << " Unexpected CommissioningTask: "
893  << " Unable to create FedCablingTask object!";
894  }
895 
896  // Check if key is found and, if so, book histos and set update freq
897  if ( cablingTasks_.find( key ) != cablingTasks_.end() ) {
898  if ( cablingTasks_[key] ) {
899  cablingTasks_[key]->bookHistograms();
900  cablingTasks_[key]->updateFreq(1); //@@ hardwired to update every event!!!
901  booked++;
902  std::stringstream ss;
903  ss << "[SiStripCommissioningSource::" << __func__ << "]"
904  << " Booking histograms for '" << cablingTasks_[key]->myName()
905  << "' object with key 0x" << std::hex << std::setfill('0') << std::setw(8) << key << std::dec
906  << " in directory \"" << dir << "\"";
907  LogTrace(mlDqmSource_) << ss.str();
908  } else {
909  std::stringstream ss;
910  ss << "[SiStripCommissioningSource::" << __func__ << "]"
911  << " NULL pointer to CommissioningTask for key 0x"
912  << std::hex << std::setfill('0') << std::setw(8) << key << std::dec
913  << " in directory " << dir
914  << " Unable to book histograms!";
915  edm::LogWarning(mlDqmSource_) << ss.str();
916  }
917  } else {
918  std::stringstream ss;
919  ss << "[SiStripCommissioningSource::" << __func__ << "]"
920  << " Unable to find CommissioningTask for key 0x"
921  << std::hex << std::setfill('0') << std::setw(8) << key << std::dec
922  << " in directory " << dir
923  << " Unable to book histograms!";
924  edm::LogWarning(mlDqmSource_) << ss.str();
925  }
926 
927  } else {
928  std::stringstream ss;
929  ss << "[SiStripCommissioningSource::" << __func__ << "]"
930  << " CommissioningTask object already exists for key 0x"
931  << std::hex << std::setfill('0') << std::setw(8) << key << std::dec
932  << " in directory " << dir
933  << " Unable to create FedCablingTask object!";
934  edm::LogWarning(mlDqmSource_) << ss.str();
935  }
936 
937  } // loop through apv pairs
938  } // loop through modules
939  } // loop through ccus
940  } // loop through rings
941  } // loop through fecs
942  } // loop through crates
943 
945  << "[SiStripCommissioningSource::" << __func__ << "]"
946  << " Created " << booked
947  << " CommissioningTask objects and booked histograms";
948 
949 }
DQMStore *const dqm(std::string method="") const
static const char mlDqmSource_[]
const std::vector< SiStripFecCrate > & crates() const
Utility class that identifies a position within the strip tracker control structure, down to the level of an APV25.
Definition: SiStripFecKey.h:45
static std::string runType(const sistrip::RunType &)
Class containning control, module, detector and connection information, at the level of a FED channel...
#define LogTrace(id)
dbl *** dir
Definition: mlp_gen.cc:35
std::pair< uint16_t, uint16_t > PairOfU16
Definition: SiStripModule.h:40
void SiStripCommissioningSource::createRunNumber ( )
private

Definition at line 706 of file SiStripCommissioningSource.cc.

References base_, dqm(), sistrip::mlDqmSource_, sistrip::root_, writedatasetfile::run, run_, sistrip::runNumber_, sistrip::sep_, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by analyze().

706  {
707 
708  // Set commissioning task to default ("undefined") value
709  if ( !run_ ) {
711  << "[SiStripCommissioningSource::" << __func__ << "]"
712  << " NULL run number!";
713  return;
714  }
715 
716  // Create MonitorElement that identifies run number
717  dqm()->setCurrentFolder( base_ + sistrip::root_ );
718  std::stringstream run;
719  run << run_;
720  dqm()->bookString( std::string(sistrip::runNumber_) + sistrip::sep_ + run.str(), run.str() );
721 
722 }
static const char runNumber_[]
DQMStore *const dqm(std::string method="") const
static const char mlDqmSource_[]
static const char sep_[]
static const char root_[]
void SiStripCommissioningSource::createTask ( const SiStripEventSummary * const  summary,
const edm::EventSetup setup 
)
private

Definition at line 726 of file SiStripCommissioningSource.cc.

References base_, cablingTask_, createCablingTasks(), createTasks(), dqm(), sistrip::FED_CABLING, LogTrace, sistrip::mlDqmSource_, sistrip::root_, SiStripEnumsAndStrings::runType(), SiStripEventSummary::runType(), sistrip::sep_, AlCaHLTBitMon_QueryRunRegistry::string, task_, taskConfigurable_, sistrip::taskId_, tasksExist_, sistrip::UNDEFINED_RUN_TYPE, and sistrip::UNKNOWN_RUN_TYPE.

Referenced by analyze().

726  {
727 
728  // Set commissioning task to default ("undefined") value
730 
731  // Retrieve commissioning task from EventSummary
732  if ( summary ) {
733  task_ = summary->runType();
734  std::stringstream ss;
735  ss << "[SiStripCommissioningSource::" << __func__ << "]"
736  << " Identified CommissioningTask from EventSummary to be \""
738  << "\"";
739  LogTrace(mlDqmSource_) << ss.str();
740  } else {
742  std::stringstream ss;
743  ss << "[SiStripCommissioningSource::" << __func__ << "]"
744  << " NULL pointer to SiStripEventSummary!"
745  << " Check SiStripEventSummary is found/present in Event";
746  edm::LogWarning(mlDqmSource_) << ss.str();
747  }
748 
749  // Override task with ParameterSet configurable (if defined)
751  if ( configurable != sistrip::UNDEFINED_RUN_TYPE &&
752  configurable != sistrip::UNKNOWN_RUN_TYPE ) {
753  std::stringstream ss;
754  ss << "[SiStripCommissioningSource::" << __func__ << "]"
755  << " Overriding CommissioningTask from EventSummary (\""
757  << "\") with value retrieved from .cfg file (\""
758  << SiStripEnumsAndStrings::runType( configurable )
759  << "\")!";
760  LogTrace(mlDqmSource_) << ss.str();
761  task_ = configurable;
762  }
763 
764  // Create ME (std::string) that identifies commissioning task
765  dqm()->setCurrentFolder( base_ + sistrip::root_ );
767  dqm()->bookString( std::string(sistrip::taskId_) + sistrip::sep_ + task_str, task_str );
768 
769  // Check commissioning task is known / defined
772  std::stringstream ss;
773  ss << "[SiStripCommissioningSource::" << __func__ << "]"
774  << " Unexpected CommissioningTask found ("
775  << static_cast<uint16_t>(task_) << ") \""
777  << " Unexpected value found in SiStripEventSummary and/or cfg file"
778  << " If SiStripEventSummary is not present in Event,"
779  << " check 'CommissioningTask' configurable in cfg file";
780  edm::LogWarning(mlDqmSource_) << ss.str();
781  return;
782  } else {
783  std::stringstream ss;
784  ss << "[SiStripCommissioningSource::" << __func__ << "]"
785  << " Identified CommissioningTask to be \""
787  << "\"";
788  LogTrace(mlDqmSource_) << ss.str();
789  }
790 
791  // Check if commissioning task is FED cabling
792  if ( task_ == sistrip::FED_CABLING ) { cablingTask_ = true; }
793  else { cablingTask_ = false; }
794 
795  std::stringstream ss;
796  ss << "[SiStripCommissioningSource::" << __func__ << "]"
797  << " CommissioningTask: "
798  << SiStripEnumsAndStrings::runType( summary->runType() );
799  LogTrace(mlDqmSource_) << ss.str();
800 
802  << "[SiStripCommissioningSource::" << __func__ << "]"
803  << " Creating CommissioningTask objects and booking histograms...";
804  if ( cablingTask_ ) { createCablingTasks(); }
805  else { createTasks( task_ , setup ); }
807  << "[SiStripCommissioningSource::" << __func__ << "]"
808  << " Finished booking histograms!";
809  tasksExist_ = true;
810 
811 }
DQMStore *const dqm(std::string method="") const
static const char mlDqmSource_[]
void createTasks(sistrip::RunType, const edm::EventSetup &)
static std::string runType(const sistrip::RunType &)
const sistrip::RunType & runType() const
static const char sep_[]
static const char taskId_[]
#define LogTrace(id)
static const char root_[]
void SiStripCommissioningSource::createTasks ( sistrip::RunType  run_type,
const edm::EventSetup setup 
)
private

Definition at line 953 of file SiStripCommissioningSource.cc.

References sistrip::APV_LATENCY, sistrip::APV_TIMING, base_, sistrip::CALIBRATION, sistrip::CALIBRATION_DECO, sistrip::CALIBRATION_SCAN, sistrip::CALIBRATION_SCAN_DECO, sistrip::DAQ_SCOPE_MODE, TauDecayModes::dec, sistrip::detectorView_, dir, sistrip::dir_, dqm(), sistrip::FAST_CABLING, SiStripFedKey::feChan(), sistrip::FED_TIMING, fedCabling_, SiStripFedCabling::fedConnections(), SiStripFedCabling::fedIds(), SiStripFedKey::feUnit(), filename_, sistrip::FINE_DELAY, sistrip::invalid_, sistrip::mlDqmSource_, sistrip::NOISE, sistrip::OPTO_SCAN, or, parameters_, sistrip::PEDESTALS, sistrip::PEDS_FULL_NOISE, sistrip::PEDS_ONLY, sistrip::root_, run_, GeneralSetup::setup(), task_, tasks_, sistrip::UNDEFINED_RUN_TYPE, updateFreq_, view_, and sistrip::VPSP_SCAN.

Referenced by createTask().

953  {
954 
955  uint16_t booked = 0;
956 
957  // latency has partition-level histos, so treat separately
958  if (task_ == sistrip::APV_LATENCY) {
959 
960  for (uint16_t partition = 0; partition < 4; ++partition) {
961  // make a task for every partition; tracker-wide histo is shared
963  tasks_[0][partition]->eventSetup( &setup );
964  tasks_[0][partition]->bookHistograms();
965  tasks_[0][partition]->updateFreq( updateFreq_ );
966  booked++;
967  }
968 
969  // fine-delay has 1 histo for the whole tracker, so treat separately
970  } else if (task_ == sistrip::FINE_DELAY) {
971 
972  tasks_[0][0] = new FineDelayTask( dqm(), FedChannelConnection() );
973  tasks_[0][0]->eventSetup( &setup );
974  tasks_[0][0]->bookHistograms();
975  tasks_[0][0]->updateFreq( updateFreq_ );
976  booked++;
977 
978  } else { // now do any other task
979 
980  // Iterate through FED ids and channels
981  for (auto ifed = fedCabling_->fedIds().begin() ; ifed != fedCabling_->fedIds().end(); ++ifed ) {
982 
983  // Iterate through connected FED channels
984  auto conns = fedCabling_->fedConnections(*ifed);
985  for (auto iconn = conns.begin() ; iconn != conns.end(); ++iconn ) {
986 
987  // Create FEC key
988  SiStripFecKey fec_key( iconn->fecCrate(),
989  iconn->fecSlot(),
990  iconn->fecRing(),
991  iconn->ccuAddr(),
992  iconn->ccuChan() );
993  // Create FED key and check if non-zero
994  SiStripFedKey fed_key( iconn->fedId(),
995  SiStripFedKey::feUnit(iconn->fedCh()),
996  SiStripFedKey::feChan(iconn->fedCh()) );
997  if ( !iconn->isConnected() ) { continue; }
998 
999  // define the view in which to work and paths for histograms
1000  // currently FecView (control view) and FedView (readout view)
1001  // DetView (detector view) implementation has started
1002  // Set working directory prior to booking histograms
1003  std::stringstream dir;
1004  dir << base_;
1005  if (view_ == "Default") { // default
1006  if ( run_type == sistrip::FAST_CABLING ) {
1007  dir << fed_key.path(); // cabling in fed view
1008  } else {
1009  dir << fec_key.path(); // all other runs in control view
1010  }
1011  } else if (view_ == "FecView") {
1012  dir << fec_key.path();
1013  } else if (view_ == "FedView") {
1014  dir << fed_key.path();
1015  } else if (view_ == "DetView") {
1016  // currently just by detid from the connection, which is empty...
1017  dir << sistrip::root_ << sistrip::dir_
1019  << iconn->detId();
1020  } else {
1022  << "[SiStripCommissioningSource::" << __func__ << "]"
1023  << " Invalid view " << view_ << std::endl
1024  << " Histograms will end up all in the top directory.";
1025  } // end if view_ == ...
1026  dqm()->setCurrentFolder( dir.str() );
1027 
1028  // Create commissioning task objects
1029  if ( !tasks_[iconn->fedId()][iconn->fedCh()] ) {
1030  if ( task_ == sistrip::FAST_CABLING ) {
1031  tasks_[iconn->fedId()][iconn->fedCh()] = new FastFedCablingTask( dqm(), *iconn );
1032  } else if ( task_ == sistrip::APV_TIMING ) {
1033  tasks_[iconn->fedId()][iconn->fedCh()] = new ApvTimingTask( dqm(), *iconn );
1034  } else if ( task_ == sistrip::FED_TIMING ) {
1035  tasks_[iconn->fedId()][iconn->fedCh()] = new FedTimingTask( dqm(), *iconn );
1036  } else if ( task_ == sistrip::OPTO_SCAN ) {
1037  tasks_[iconn->fedId()][iconn->fedCh()] = new OptoScanTask( dqm(), *iconn );
1038  } else if ( task_ == sistrip::VPSP_SCAN ) {
1039  tasks_[iconn->fedId()][iconn->fedCh()] = new VpspScanTask( dqm(), *iconn );
1040  } else if ( task_ == sistrip::PEDESTALS ) {
1041  tasks_[iconn->fedId()][iconn->fedCh()] = new PedestalsTask( dqm(), *iconn );
1042  } else if ( task_ == sistrip::PEDS_ONLY ) {
1043  tasks_[iconn->fedId()][iconn->fedCh()] = new PedsOnlyTask( dqm(), *iconn );
1044  } else if ( task_ == sistrip::NOISE ) {
1045  tasks_[iconn->fedId()][iconn->fedCh()] = new NoiseTask( dqm(), *iconn );
1046  } else if ( task_ == sistrip::PEDS_FULL_NOISE ) {
1047  tasks_[iconn->fedId()][iconn->fedCh()] = new PedsFullNoiseTask( dqm(), *iconn, parameters_ );
1048  } else if ( task_ == sistrip::DAQ_SCOPE_MODE ) {
1049  tasks_[iconn->fedId()][iconn->fedCh()] = new DaqScopeModeTask( dqm(), *iconn, parameters_ );
1050  } else if ( task_ == sistrip::CALIBRATION_SCAN ||
1052  tasks_[iconn->fedId()][iconn->fedCh()] = new CalibrationScanTask(dqm(),*iconn,task_,filename_.c_str(),run_,setup);
1053  }
1054  else if ( task_ == sistrip::CALIBRATION ||
1056  tasks_[iconn->fedId()][iconn->fedCh()] = new CalibrationTask(dqm(),*iconn,task_,filename_.c_str(),run_,setup);
1057  } else if ( task_ == sistrip::UNDEFINED_RUN_TYPE ) {
1059  << "[SiStripCommissioningSource::" << __func__ << "]"
1060  << " Undefined CommissioningTask"
1061  << " Unable to create CommissioningTask object!";
1062  } else {
1064  << "[SiStripCommissioningSource::" << __func__ << "]"
1065  << " Unknown CommissioningTask"
1066  << " Unable to create CommissioningTask object!";
1067  }
1068 
1069  // Check if fed_key is found and, if so, book histos and set update freq
1070  if ( tasks_[iconn->fedId()][iconn->fedCh()] ) {
1071  tasks_[iconn->fedId()][iconn->fedCh()]->eventSetup( &setup );
1072 
1073 
1076  tasks_[iconn->fedId()][iconn->fedCh()]->bookHistograms();
1077  else{
1079  static_cast<CalibrationScanTask*>(tasks_[iconn->fedId()][iconn->fedCh()])->setCurrentFolder(dir.str());
1081  static_cast<CalibrationTask*>(tasks_[iconn->fedId()][iconn->fedCh()])->setCurrentFolder(dir.str());
1082  }
1083  tasks_[iconn->fedId()][iconn->fedCh()]->updateFreq( updateFreq_ );
1084  booked++;
1085  } else {
1086  std::stringstream ss;
1087  ss << "[SiStripCommissioningSource::" << __func__ << "]"
1088  << " NULL pointer to CommissioningTask for key 0x"
1089  << std::hex << std::setfill('0') << std::setw(8) << fed_key.key() << std::dec
1090  << " in directory " << dir.str()
1091  << " Unable to book histograms!";
1092  edm::LogWarning(mlDqmSource_) << ss.str();
1093  }
1094  } else {
1095  std::stringstream ss;
1096  ss << "[SiStripCommissioningSource::" << __func__ << "]"
1097  << " CommissioningTask object already exists for key 0x"
1098  << std::hex << std::setfill('0') << std::setw(8) << fed_key.key() << std::dec
1099  << " in directory " << dir.str()
1100  << " Unable to create CommissioningTask object!";
1101  edm::LogWarning(mlDqmSource_) << ss.str();
1102  }
1103  } // loop over fed channels
1104  } // loop over feds
1105  } // end other tasks
1107  << "[SiStripCommissioningSource::" << __func__ << "]"
1108  << " Created " << booked
1109  << " CommissioningTask objects and booked histograms";
1110 }
static const char dir_[]
A container class for generic run and event-related info, information required by the commissioning a...
Definition: SiStripFedKey.h:56
DQMStore *const dqm(std::string method="") const
static const char mlDqmSource_[]
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:2
static const char detectorView_[]
Utility class that identifies a position within the strip tracker control structure, down to the level of an APV25.
Definition: SiStripFecKey.h:45
Class containning control, module, detector and connection information, at the level of a FED channel...
FedsConstIterRange fedIds() const
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
const uint16_t & feUnit() const
static const uint16_t invalid_
Definition: Constants.h:16
ConnsConstIterRange fedConnections(uint16_t fed_id) const
const uint16_t & feChan() const
static const char root_[]
dbl *** dir
Definition: mlp_gen.cc:35
void SiStripCommissioningSource::directory ( std::stringstream &  dir,
uint32_t  run_number = 0 
)
private

Definition at line 1150 of file SiStripCommissioningSource.cc.

References hcalSimParameters_cfi::he, sysUtil::pid, AlCaHLTBitMon_QueryRunRegistry::string, and tmp.

Referenced by endJob().

1151  {
1152 
1153  // Get details about host
1154  char hn[256];
1155  gethostname( hn, sizeof(hn) );
1156  struct hostent* he;
1157  he = gethostbyname(hn);
1158 
1159  // Extract host name and ip
1160  std::string host_name;
1161  std::string host_ip;
1162  if ( he ) {
1163  host_name = std::string(he->h_name);
1164  host_ip = std::string( inet_ntoa( *(struct in_addr*)(he->h_addr) ) );
1165  } else {
1166  host_name = "unknown.cern.ch";
1167  host_ip = "255.255.255.255";
1168  }
1169 
1170  // Reformat IP address
1172  std::stringstream ip;
1173  //for ( uint16_t ii = 0; ii < 4; ++ii ) {
1174  while ( pos != std::string::npos ) {
1175  std::string::size_type tmp = host_ip.find(".",pos);
1176  if ( tmp != std::string::npos ) {
1177  ip << std::setw(3)
1178  << std::setfill('0')
1179  << host_ip.substr( pos, tmp-pos )
1180  << ".";
1181  pos = tmp+1; // skip the delimiter "."
1182  } else {
1183  ip << std::setw(3)
1184  << std::setfill('0')
1185  << host_ip.substr( pos );
1186  pos = std::string::npos;
1187  }
1188  }
1189 
1190  // Get pid
1191  pid_t pid = getpid();
1192 
1193  // Construct string
1194  if ( run_number ) {
1195  dir << std::setw(8)
1196  << std::setfill('0')
1197  << run_number
1198  << "_";
1199  }
1200  dir << ip.str()
1201  << "_"
1202  << std::setw(5)
1203  << std::setfill('0')
1204  << pid;
1205 
1206 }
uint16_t size_type
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
dbl *** dir
Definition: mlp_gen.cc:35
DQMStore *const SiStripCommissioningSource::dqm ( std::string  method = "") const
private

Definition at line 108 of file SiStripCommissioningSource.cc.

References dqm_, and sistrip::mlDqmSource_.

Referenced by beginRun(), createCablingTasks(), createRunNumber(), createTask(), createTasks(), endJob(), and remove().

108  {
109  if ( !dqm_ ) {
110  std::stringstream ss;
111  if ( !method.empty() ) { ss << "[SiStripCommissioningSource::" << method << "]" << std::endl; }
112  else { ss << "[SiStripCommissioningSource]" << std::endl; }
113  ss << " NULL pointer to DQMStore";
114  edm::LogWarning(mlDqmSource_) << ss.str();
115  return nullptr;
116  } else { return dqm_; }
117 }
static const char mlDqmSource_[]
void SiStripCommissioningSource::endJob ( void  )
overridevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 175 of file SiStripCommissioningSource.cc.

References sistrip::APV_LATENCY, cablingTasks_, sistrip::DAQ_SCOPE_MODE, dir, directory(), dqm(), fecCabling_, fedCabling_, SiStripFedCabling::fedConnections(), SiStripFedCabling::fedIds(), filename_, sistrip::FINE_DELAY, LogTrace, sistrip::mlDqmSource_, dataset::name, partitionName_, run_, AlCaHLTBitMon_QueryRunRegistry::string, task_, and tasks_.

175  {
177  << "[SiStripCommissioningSource::" << __func__ << "]"
178  << " Halting..." << std::endl;
179 
180  // ---------- Update histograms ----------
181  // Cabling task
182  for ( TaskMap::iterator itask = cablingTasks_.begin(); itask != cablingTasks_.end(); itask++ ) {
183  if ( itask->second ) { itask->second->updateHistograms(); }
184  }
185 
186  if (task_ == sistrip::APV_LATENCY) {
187  for (uint16_t partition = 0; partition < 4; ++partition) {
188  tasks_[0][partition]->updateHistograms();
189  }
190  } else if (task_ == sistrip::FINE_DELAY ) {
191  tasks_[0][0]->updateHistograms();
192  } else {
193  // All tasks except cabling
194  uint16_t fed_id = 0;
195  uint16_t fed_ch = 0;
196  auto ifed = fedCabling_->fedIds().begin();
197  for ( ; ifed != fedCabling_->fedIds().end(); ifed++ ) {
198  auto conns = fedCabling_->fedConnections(*ifed);
199  for ( auto iconn = conns.begin(); iconn != conns.end(); iconn++ ) {
200  if ( !iconn->isConnected() ) { continue; }
201  fed_id = iconn->fedId();
202  fed_ch = iconn->fedCh();
203  if ( tasks_[fed_id][fed_ch] ) {
204  tasks_[fed_id][fed_ch]->updateHistograms();
205  delete tasks_[fed_id][fed_ch];
206  }
207  }
208  }
209  }
210  // ---------- Save histos to root file ----------
211 
212  // Strip filename of ".root" extension
214  if ( filename_.find(".root",0) == std::string::npos ) { name = filename_; }
215  else { name = filename_.substr( 0, filename_.find(".root",0) ); }
216 
217  // Retrieve SCRATCH directory
218  std::string scratch = "SCRATCH"; //@@ remove trailing slash!!!
219  std::string dir = "";
220  if ( getenv(scratch.c_str()) != nullptr ) {
221  dir = getenv(scratch.c_str());
222  }
223 
224  // Add directory path
225  std::stringstream ss;
226  if ( !dir.empty() ) { ss << dir << "/"; }
227  else { ss << "/tmp/"; }
228 
229  // Add filename with run number, host ip, pid and .root extension
230  ss << name << "_";
231  if(task_ == sistrip::DAQ_SCOPE_MODE and not partitionName_.empty()) // only for spy-runs
232  ss << partitionName_ << "_";
233 
234  directory(ss,run_);
235  ss << ".root";
236 
237  // Save file with appropriate filename (if run number is known)
238  if ( !filename_.empty() ) {
239  if ( run_ != 0 ) { dqm()->save( ss.str() ); }
240  else {
242  << "[SiStripCommissioningSource::" << __func__ << "]"
243  << " NULL value for RunNumber! No root file saved!";
244  }
245  } else {
247  << "[SiStripCommissioningSource::" << __func__ << "]"
248  << " NULL value for filename! No root file saved!";
249  }
250 
252  << "[SiStripCommissioningSource::" << __func__ << "]"
253  << " Saved all histograms to file \""
254  << ss.str() << "\"";
255 
256  // ---------- Delete histograms ----------
257  // Remove all MonitorElements in "SiStrip" dir and below
258  // remove();
259 
260  // Delete histogram objects
261  // clearCablingTasks();
262  // clearTasks();
263 
264  // ---------- Delete cabling ----------
265  if ( fedCabling_ ) { fedCabling_ = nullptr; }
266  if ( fecCabling_ ) { delete fecCabling_; fecCabling_ = nullptr; }
267 
268 }
DQMStore *const dqm(std::string method="") const
static const char mlDqmSource_[]
void directory(std::stringstream &, uint32_t run_number=0)
FedsConstIterRange fedIds() const
#define LogTrace(id)
ConnsConstIterRange fedConnections(uint16_t fed_id) const
dbl *** dir
Definition: mlp_gen.cc:35
void SiStripCommissioningSource::fillCablingHistos ( const SiStripEventSummary * const  summary,
const edm::DetSetVector< SiStripRawDigi > &  raw 
)
private

Definition at line 412 of file SiStripCommissioningSource.cc.

References cablingTasks_, sistrip::CCU_CHAN, SiStripFecKey::ccuAddr(), SiStripFecKey::ccuChan(), SiStripKey::channel(), SiStripEventSummary::dcuId(), TauDecayModes::dec, SiStripEventSummary::deviceId(), edm::DetSetVector< T >::end(), fecCabling_, SiStripFecKey::fecCrate(), SiStripFecKey::fecRing(), SiStripFecKey::fecSlot(), fedCabling_, SiStripFedCabling::fedIds(), edm::DetSetVector< T >::find(), cuy::ii, sistrip::invalid_, findQualityFiles::jj, SiStripKey::key(), SiStripModule::key(), LogTrace, Averages::Params::max_, Averages::Params::mean_, Averages::Params::median_, Averages::Params::min_, sistrip::mlDqmSource_, sistrip::mlTest_, SiStripFecCabling::module(), Averages::Params::num_, callgraph::path, Averages::Params::rms_, and tmp.

Referenced by analyze().

413  {
414 
415  // Create FEC key using DCU id and LLD channel from SiStripEventSummary
416  const SiStripModule& module = fecCabling_->module( summary->dcuId() );
417  uint16_t lld_channel = ( summary->deviceId() & 0x3 ) + 1;
418  SiStripFecKey key_object( module.key().fecCrate(),
419  module.key().fecSlot(),
420  module.key().fecRing(),
421  module.key().ccuAddr(),
422  module.key().ccuChan(),
423  lld_channel );
424  uint32_t fec_key = key_object.key();
425  std::stringstream sss;
426  sss << "[SiStripCommissioningSource::" << __func__ << "]"
427  << " Found DcuId 0x"
428  << std::hex << std::setw(8) << std::setfill('0') << summary->dcuId() << std::dec
429  << " with Crate/FEC/Ring/CCU/Module/LLD: "
430  << module.key().fecCrate() << "/"
431  << module.key().fecSlot() << "/"
432  << module.key().fecRing() << "/"
433  << module.key().ccuAddr() << "/"
434  << module.key().ccuChan() << "/"
435  << lld_channel;
436  edm::LogWarning(mlDqmSource_) << sss.str();
437 
438  //LogTrace(mlTest_) << "TEST : " << key_object;
439 
440  // Check on whether DCU id is found
441  if ( key_object.isInvalid( sistrip::CCU_CHAN ) ) {
442  std::stringstream ss;
443  ss << "[SiStripCommissioningSource::" << __func__ << "]"
444  << " DcuId 0x"
445  << std::hex << std::setw(8) << std::setfill('0') << summary->dcuId() << std::dec
446  << " in 'DAQ register' field not found in cabling map!"
447  << " (NULL values returned for FEC path)";
448  edm::LogWarning(mlDqmSource_) << ss.str();
449  return;
450  }
451 
452  // Iterate through FED ids
453  for (auto ifed = fedCabling_->fedIds().begin() ; ifed != fedCabling_->fedIds().end(); ifed++ ) {
454 
455  // Check if FedId is non-zero
456  if ( *ifed == sistrip::invalid_ ) { continue; }
457 
458  // Container to hold median signal level for FED cabling task
459  std::map<uint16_t,float> medians; medians.clear();
460  std::map<uint16_t,float> medians1; medians1.clear();
461 
462  // Iterate through FED channels
463  for ( uint16_t ichan = 0; ichan < 96; ichan++ ) {
464 
465  // Retrieve digis for given FED key
466  uint32_t fed_key = ( ( *ifed & sistrip::invalid_ ) << 16 ) | ( ichan & sistrip::invalid_ );
467 
468  std::vector< edm::DetSet<SiStripRawDigi> >::const_iterator digis = raw.find( fed_key );
469  if ( digis != raw.end() ) {
470  if ( digis->data.empty() ) { continue; }
471 
472  Averages ave;
473  for ( uint16_t idigi = 0; idigi < digis->data.size(); idigi++ ) {
474  ave.add( static_cast<uint32_t>(digis->data[idigi].adc()) );
475  }
476  Averages::Params params;
477  ave.calc(params);
478  medians[ichan] = params.median_; // Store median signal level
479  medians1[ichan] = digis->data[0].adc();
480 
481  }
482 
483  } // fed channel loop
484 
485  // Calculate mean and spread on all (median) signal levels
486  Averages average;
487  std::map<uint16_t,float>::const_iterator ii = medians.begin();
488  for ( ; ii != medians.end(); ii++ ) { average.add( ii->second ); }
490  average.calc(tmp);
491 
492  std::stringstream ss;
493  ss << "FED Averages:" << std::endl
494  << " nChans: " << medians.size() << std::endl
495  << " num/mean/median/rms/max/min: "
496  << tmp.num_ << "/"
497  << tmp.mean_ << "/"
498  << tmp.median_ << "/"
499  << tmp.rms_ << "/"
500  << tmp.max_ << "/"
501  << tmp.min_ << std::endl;
502  LogTrace(mlDqmSource_) << ss.str();
503 
504  // Calculate mean and spread on "filtered" data
505  Averages truncated;
506  std::map<uint16_t,float>::const_iterator jj = medians.begin();
507  for ( ; jj != medians.end(); jj++ ) {
508  if ( jj->second < tmp.median_+tmp.rms_ ) {
509  truncated.add( jj->second );
510  }
511  }
512  Averages::Params params;
513  truncated.calc(params);
514 
515  std::stringstream ss1;
516  ss1 << "Truncated Averages:" << std::endl
517  << " nChans: " << medians.size() << std::endl
518  << " num/mean/median/rms/max/min: "
519  << params.num_ << "/"
520  << params.mean_ << "/"
521  << params.median_ << "/"
522  << params.rms_ << "/"
523  << params.max_ << "/"
524  << params.min_ << std::endl;
525  LogTrace(mlDqmSource_) << ss1.str();
526 
527  // Identify channels with signal
528  std::stringstream ss2;
529  std::stringstream ss3;
530  std::map<uint16_t,float> channels;
531  std::map<uint16_t,float>::const_iterator ichan = medians.begin();
532  for ( ; ichan != medians.end(); ichan++ ) {
533  if ( ichan->second > 200. ) {
534  LogTrace(mlTest_) << "TEST FOUND SIGNAL HIGH: " << *ifed << " " << ichan->first << " " << ichan->second;
535  channels[ichan->first] = ichan->second;
536  }
537  ss2 //<< ichan->first << "/"
538  << ichan->second << " ";
539  ss3 //<< ichan->first << "/"
540  << medians1[ichan->first] << " ";
541  }
542 
543  ss2 << std::endl;
544  ss3 << std::endl;
545  LogTrace(mlTest_) << "DUMP for FED " << *ifed << ": " << ss2.str();
546  LogTrace(mlTest_) << "FIRST ADC VAL " << *ifed << ": " << ss3.str();
547 
548  // Fill cabling histograms
549  if ( cablingTasks_.find(fec_key) != cablingTasks_.end() ) {
550  if ( !channels.empty() ) {
551  cablingTasks_[fec_key]->fillHistograms( *summary, *ifed, channels );
552  SiStripFecKey path( fec_key );
553  std::stringstream ss;
554  ss << "[SiStripCommissioningSource::" << __func__ << "]"
555  << " Filled histogram for '" << cablingTasks_[fec_key]->myName()
556  << "' object with FecKey: 0x"
557  << std::hex << std::setfill('0') << std::setw(8) << fec_key << std::dec
558  << " and Crate/FEC/ring/CCU/module/LLDchan: "
559  << path.fecCrate() << "/"
560  << path.fecSlot() << "/"
561  << path.fecRing() << "/"
562  << path.ccuAddr() << "/"
563  << path.ccuChan() << "/"
564  << path.channel();
565  LogTrace(mlDqmSource_) << ss.str();
566  }
567  } else {
568  SiStripFecKey path( fec_key );
569  std::stringstream ss;
570  ss << "[SiStripCommissioningSource::" << __func__ << "]"
571  << " Unable to find CommissioningTask object with FecKey: 0x"
572  << std::hex << std::setfill('0') << std::setw(8) << fec_key << std::dec
573  << " and Crate/FEC/ring/CCU/module/LLDchan: "
574  << path.fecCrate() << "/"
575  << path.fecSlot() << "/"
576  << path.fecRing() << "/"
577  << path.ccuAddr() << "/"
578  << path.ccuChan() << "/"
579  << path.channel();
580  edm::LogWarning(mlDqmSource_) << ss.str();
581  }
582 
583  } // fed id loop
584 
585 }
Device and connection information at the level of a front-end module.
Definition: SiStripModule.h:24
iterator find(det_id_type id)
Definition: DetSetVector.h:290
const uint16_t & fecRing() const
const SiStripModule & module(const FedChannelConnection &conn) const
const SiStripFecKey & key() const
static const char mlDqmSource_[]
const uint16_t & fecSlot() const
const uint32_t & key() const
Definition: SiStripKey.h:125
Utility class that identifies a position within the strip tracker control structure, down to the level of an APV25.
Definition: SiStripFecKey.h:45
FedsConstIterRange fedIds() const
const uint32_t & dcuId() const
static const char mlTest_[]
iterator end()
Return the off-the-end iterator.
Definition: DetSetVector.h:361
#define LogTrace(id)
ii
Definition: cuy.py:590
const uint16_t & fecCrate() const
const uint32_t & deviceId() const
const uint16_t & ccuAddr() const
static const uint16_t invalid_
Definition: Constants.h:16
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
uint32_t num_
Definition: Averages.h:26
const uint16_t & ccuChan() const
Definition: vlib.h:208
void SiStripCommissioningSource::fillHistos ( const SiStripEventSummary * const  summary,
const edm::DetSetVector< SiStripRawDigi > &  raw,
const edm::DetSetVector< SiStripRawDigi > &  rawAlt = edm::DetSetVector<SiStripRawDigi>(),
const edmNew::DetSetVector< SiStripCluster > &  clusters = edmNew::DetSetVector<SiStripCluster>() 
)
private

Definition at line 589 of file SiStripCommissioningSource.cc.

References sistrip::APV_LATENCY, edmNew::DetSetVector< T >::begin(), TauDecayModes::dec, edm::DetSetVector< T >::empty(), edmNew::DetSetVector< T >::empty(), edm::DetSetVector< T >::end(), edmNew::DetSetVector< T >::end(), fedCabling_, SiStripFedCabling::fedConnections(), SiStripFedCabling::fedIds(), edm::DetSetVector< T >::find(), sistrip::FINE_DELAY, sistrip::invalid_, sistrip::mlDqmSource_, or, task_, tasks_, and sistrip::valid_.

Referenced by analyze().

592  {
593 
594  // Iterate through FED ids and channels
595  std::vector<uint16_t> stripOnClusters;
596  auto ifed = fedCabling_->fedIds().begin();
597  for ( ; ifed != fedCabling_->fedIds().end(); ifed++ ) {
598 
599  // Iterate through connected FED channels
600  auto conns = fedCabling_->fedConnections(*ifed);
601  for (auto iconn = conns.begin() ; iconn != conns.end(); iconn++ ) {
602 
603  if ( !(iconn->fedId()) || iconn->fedId() > sistrip::valid_ ) { continue; }
604  if ( !iconn->isConnected() ) { continue; }
605 
606  // Create FED key and check if non-zero
607  // note: the key is not computed using the same formula as in commissioning histograms.
608  // beware that changes here must match changes in raw2digi and in SiStripFineDelayHit
609  uint32_t fed_key = ( ( iconn->fedId() & sistrip::invalid_ ) << 16 ) | ( iconn->fedCh() & sistrip::invalid_ );
610  // Retrieve digis for given FED key and check if found
611  std::vector< edm::DetSet<SiStripRawDigi> >::const_iterator digis = raw.find( fed_key );
612 
613  // only for spy data-taking --> tick measurement
614  std::vector< edm::DetSet<SiStripRawDigi> >::const_iterator digisAlt;
615  if(not rawAlt.empty()){
616  digisAlt = rawAlt.find(fed_key);
617  if(digisAlt == rawAlt.end()) continue;
618  }
619 
620  // find the strips belonging to the clusters connected to this APV pair
621  stripOnClusters.clear();
622  if(not clusters.empty()){
623  for (edmNew::DetSetVector<SiStripCluster>::const_iterator DSViter = clusters.begin(); DSViter != clusters.end(); DSViter++ ) {
624  if(DSViter->id() != iconn->detId()) continue; // select clusters on this module
625  for(edmNew::DetSet<SiStripCluster>::const_iterator DSiter = DSViter->begin(); DSiter != DSViter->end(); DSiter++) { // loop on the clusters
626  if(DSiter->firstStrip() >= iconn->apvPairNumber()*256 and DSiter->firstStrip() < (1+iconn->apvPairNumber())*256){ // found the right APV
627  for(size_t istrip = 0; istrip < DSiter->amplitudes().size(); istrip++){
628  stripOnClusters.push_back(DSiter->firstStrip()+istrip-iconn->apvPairNumber()*256);
629  }
630  }
631  }
632  }
633  }
634 
635  if ( digis != raw.end() ) {
636  // tasks involving tracking have partition-level histos, so treat separately
637  if (task_ == sistrip::APV_LATENCY) {
638  if( tasks_[0][iconn->fecCrate()-1] ) {
639  tasks_[0][iconn->fecCrate()-1]->fillHistograms( *summary, *digis );
640  }
641  else {
642  std::stringstream ss;
643  ss << "[SiStripCommissioningSource::" << __func__ << "]"
644  << " Unable to find CommissioningTask for FEC crate "
645  << iconn->fecCrate() << ". Unable to fill histograms!";
646  edm::LogWarning(mlDqmSource_) << ss.str();
647  }
648  }
649  else if (task_ == sistrip::FINE_DELAY) {
650  if ( tasks_[0][0] ) {
651  tasks_[0][0]->fillHistograms( *summary, *digis );
652  }
653  else {
654  std::stringstream ss;
655  ss << "[SiStripCommissioningSource::" << __func__ << "]"
656  << " Unable to find global CommissioningTask for FineDelay. Unable to fill histograms!";
657  edm::LogWarning(mlDqmSource_) << ss.str();
658  }
659  }
660  else {
661  if ( tasks_[iconn->fedId()][iconn->fedCh()] ) {
662  if(not rawAlt.empty() or digisAlt == rawAlt.end())
663  tasks_[iconn->fedId()][iconn->fedCh()]->fillHistograms( *summary, *digis );
664  else{// for spy-data
665  if(stripOnClusters.empty())
666  tasks_[iconn->fedId()][iconn->fedCh()]->fillHistograms( *summary, *digis, *digisAlt);
667  else{
668  tasks_[iconn->fedId()][iconn->fedCh()]->fillHistograms( *summary, *digis, *digisAlt, stripOnClusters);
669  }
670  }
671  }
672  else {
673  std::stringstream ss;
674  ss << "[SiStripCommissioningSource::" << __func__ << "]"
675  << " Unable to find CommissioningTask object with FED key "
676  << std::hex << std::setfill('0') << std::setw(8) << fed_key << std::dec
677  << " and FED id/ch "
678  << iconn->fedId() << "/"
679  << iconn->fedCh()
680  << " Unable to fill histograms!";
681  edm::LogWarning(mlDqmSource_) << ss.str();
682  }
683  }
684  }
685  else {
686  // issue a warning only for standard runs, as latency and fine delay only deliver
687  // pseudo zero-suppressed data
688  if ( task_ != sistrip::APV_LATENCY &&
690  std::stringstream ss;
691  ss << "[SiStripCommissioningSource::" << __func__ << "]"
692  << " Unable to find any DetSet containing digis for FED key "
693  << std::hex << std::setfill('0') << std::setw(8) << fed_key << std::dec
694  << " and FED id/ch "
695  << iconn->fedId() << "/"
696  << iconn->fedCh();
697  edm::LogWarning(mlDqmSource_) << ss.str();
698  }
699  }
700  } // fed channel loop
701  } // fed id loop
702 }
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
const_iterator end(bool update=false) const
iterator find(det_id_type id)
Definition: DetSetVector.h:290
static const char mlDqmSource_[]
data_type const * const_iterator
Definition: DetSetNew.h:30
static const uint16_t valid_
Definition: Constants.h:17
FedsConstIterRange fedIds() const
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
iterator end()
Return the off-the-end iterator.
Definition: DetSetVector.h:361
bool empty() const
Return true if we contain no DetSets.
Definition: DetSetVector.h:276
static const uint16_t invalid_
Definition: Constants.h:16
ConnsConstIterRange fedConnections(uint16_t fed_id) const
const_iterator begin(bool update=false) const
void SiStripCommissioningSource::remove ( )
private

Definition at line 1139 of file SiStripCommissioningSource.cc.

References CommonMethods::dirExists(), dqm(), and sistrip::root_.

1139  {
1140  dqm()->cd();
1141  dqm()->removeContents();
1142 
1143  if( dqm()->dirExists(sistrip::root_) ) {
1144  dqm()->rmdir(sistrip::root_);
1145  }
1146 }
def dirExists(dir)
DQMStore *const dqm(std::string method="") const
static const char root_[]

Member Data Documentation

std::string SiStripCommissioningSource::base_
private
bool SiStripCommissioningSource::cablingTask_
private

Flag to indicate whether task is FED cabling or not.

Definition at line 150 of file SiStripCommissioningSource.h.

Referenced by analyze(), beginRun(), and createTask().

TaskMap SiStripCommissioningSource::cablingTasks_
private

Map of cabling task objects (indexed using FEC key).

Definition at line 144 of file SiStripCommissioningSource.h.

Referenced by clearCablingTasks(), createCablingTasks(), endJob(), and fillCablingHistos().

edm::EDGetTokenT<edmNew::DetSetVector<SiStripCluster> > SiStripCommissioningSource::clustersToken_
private

Definition at line 109 of file SiStripCommissioningSource.h.

Referenced by analyze(), and SiStripCommissioningSource().

edm::EDGetTokenT<edm::DetSetVector<SiStripRawDigi> > SiStripCommissioningSource::digiFineDelaySelectionToken_
private

Definition at line 108 of file SiStripCommissioningSource.h.

Referenced by analyze(), and SiStripCommissioningSource().

edm::EDGetTokenT<edm::DetSetVector<SiStripRawDigi> > SiStripCommissioningSource::digiReorderedToken_
private

Definition at line 106 of file SiStripCommissioningSource.h.

Referenced by analyze(), and SiStripCommissioningSource().

edm::EDGetTokenT<edm::DetSetVector<SiStripRawDigi> > SiStripCommissioningSource::digiScopeModeToken_
private

Definition at line 107 of file SiStripCommissioningSource.h.

Referenced by analyze(), and SiStripCommissioningSource().

edm::EDGetTokenT<edm::DetSetVector<SiStripRawDigi> > SiStripCommissioningSource::digiVirginRawToken_
private

Definition at line 105 of file SiStripCommissioningSource.h.

Referenced by analyze(), and SiStripCommissioningSource().

DQMStore* SiStripCommissioningSource::dqm_
private

Interface to Data Quality Monitoring framework.

Definition at line 95 of file SiStripCommissioningSource.h.

Referenced by beginRun(), and dqm().

SiStripFecCabling* SiStripCommissioningSource::fecCabling_
private
SiStripFedCabling* SiStripCommissioningSource::fedCabling_
private
std::string SiStripCommissioningSource::filename_
private

Filename of output root file containing source histos.

Definition at line 118 of file SiStripCommissioningSource.h.

Referenced by createTasks(), and endJob().

std::string SiStripCommissioningSource::inputClusterLabel_
private

Definition at line 115 of file SiStripCommissioningSource.h.

Referenced by analyze(), and SiStripCommissioningSource().

std::string SiStripCommissioningSource::inputModuleLabel_
private

Name of digi input module.

Definition at line 112 of file SiStripCommissioningSource.h.

Referenced by SiStripCommissioningSource().

std::string SiStripCommissioningSource::inputModuleLabelAlt_
private

Definition at line 113 of file SiStripCommissioningSource.h.

Referenced by analyze(), and SiStripCommissioningSource().

std::string SiStripCommissioningSource::inputModuleLabelSummary_
private

Definition at line 114 of file SiStripCommissioningSource.h.

Referenced by SiStripCommissioningSource().

edm::EDGetTokenT<SiStripEventSummary> SiStripCommissioningSource::inputModuleSummaryToken_
private

Definition at line 104 of file SiStripCommissioningSource.h.

Referenced by analyze(), and SiStripCommissioningSource().

bool SiStripCommissioningSource::isSpy_
private

Is this a spy run ?

Definition at line 130 of file SiStripCommissioningSource.h.

Referenced by analyze(), and SiStripCommissioningSource().

edm::ParameterSet SiStripCommissioningSource::parameters_
private
std::string SiStripCommissioningSource::partitionName_
private

Partition name used for root files in spy

Definition at line 124 of file SiStripCommissioningSource.h.

Referenced by endJob().

uint32_t SiStripCommissioningSource::run_
private

Run number used for naming of root file.

Definition at line 121 of file SiStripCommissioningSource.h.

Referenced by analyze(), createRunNumber(), createTasks(), and endJob().

sistrip::RunType SiStripCommissioningSource::task_
private

Identifies commissioning task.

Definition at line 138 of file SiStripCommissioningSource.h.

Referenced by analyze(), beginRun(), createCablingTasks(), createTask(), createTasks(), endJob(), and fillHistos().

std::string SiStripCommissioningSource::taskConfigurable_
private

Identifies commissioning task read from cfg file.

Definition at line 135 of file SiStripCommissioningSource.h.

Referenced by createTask().

VecOfVecOfTasks SiStripCommissioningSource::tasks_
private

Vector of vector of task objects (indexed using FED id.ch.

Definition at line 141 of file SiStripCommissioningSource.h.

Referenced by analyze(), clearTasks(), createTasks(), endJob(), fillHistos(), and SiStripCommissioningSource().

bool SiStripCommissioningSource::tasksExist_
private

Flag to indicate whether histo objects exist or not.

Definition at line 147 of file SiStripCommissioningSource.h.

Referenced by analyze(), beginRun(), and createTask().

int32_t SiStripCommissioningSource::time_
private

Record of time used to calculate event rate.

Definition at line 127 of file SiStripCommissioningSource.h.

Referenced by analyze().

int SiStripCommissioningSource::updateFreq_
private

Update frequency for histograms (ignored for cabling).

Definition at line 153 of file SiStripCommissioningSource.h.

Referenced by analyze(), and createTasks().

std::string SiStripCommissioningSource::view_
private

flag for choosing the organizational 'view' the DQM histogram tree

Definition at line 159 of file SiStripCommissioningSource.h.

Referenced by createTasks().