CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
SiStripGainFromCalibTree Class Reference
Inheritance diagram for SiStripGainFromCalibTree:
ConditionDBWriter< SiStripApvGain > edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

 SiStripGainFromCalibTree (const edm::ParameterSet &)
 
 ~SiStripGainFromCalibTree () override
 
- Public Member Functions inherited from ConditionDBWriter< SiStripApvGain >
 ConditionDBWriter (const edm::ParameterSet &iConfig)
 
virtual ~ConditionDBWriter ()
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
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
 
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
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void algoAnalyze (const edm::Event &, const edm::EventSetup &) override
 
void algoAnalyzeTheTree ()
 
void algoBeginJob (const edm::EventSetup &iSetup) override
 
void algoBeginRun (const edm::Run &run, const edm::EventSetup &iSetup) override
 
void algoComputeMPVandGain ()
 
void algoEndJob () override
 
void algoEndRun (const edm::Run &run, const edm::EventSetup &iSetup) override
 
void bookDQMHistos (const char *dqm_dir, const char *tag)
 
template<typename T >
edm::Handle< Tconnect (const T *&ptr, edm::EDGetTokenT< T > token, const edm::Event &evt)
 
SiStripApvGaingetNewObject () override
 
void getPeakOfLandau (TH1 *InputHisto, double *FitResults, double LowRange=50, double HighRange=5400)
 
bool isBFieldConsistentWithMode (const edm::EventSetup &iSetup) const
 
bool IsGoodLandauFit (double *FitResults)
 
void MakeCalibrationMap ()
 
void merge (TH2 *A, TH2 *B)
 
void processEvent ()
 
bool produceTagFilter ()
 
void qualityMonitor ()
 
int statCollectionFromMode (const char *tag) const
 
void storeOnTree (TFileService *tfs)
 
void swapBFieldMode (void)
 

Private Attributes

std::string AlgoMode
 
bool AllowSaturation
 
const std::vector< unsigned char > * amplitude = 0
 
edm::EDGetTokenT< std::vector< unsigned char > > amplitude_token_
 
std::unordered_map< unsigned int, stAPVGain * > APVsColl
 
std::vector< stAPVGain * > APVsCollOrdered
 
unsigned int BAD
 
std::string booked_dir_
 
string CalibPrefix_
 
int CalibrationLevel
 
string CalibSuffix_
 
const std::vector< unsigned int > * charge = 0
 
std::array< std::vector< APVGain::APVmon >, 7 > Charge_1
 
std::array< std::vector< APVGain::APVmon >, 7 > Charge_2
 
std::array< std::vector< APVGain::APVmon >, 7 > Charge_3
 
std::array< std::vector< APVGain::APVmon >, 7 > Charge_4
 
edm::EDGetTokenT< std::vector< unsigned int > > charge_token_
 
std::vector< MonitorElement * > Charge_Vs_Index
 
std::vector< MonitorElement * > Charge_Vs_PathlengthTECM1
 
std::vector< MonitorElement * > Charge_Vs_PathlengthTECM2
 
std::vector< MonitorElement * > Charge_Vs_PathlengthTECP1
 
std::vector< MonitorElement * > Charge_Vs_PathlengthTECP2
 
std::vector< MonitorElement * > Charge_Vs_PathlengthTIB
 
std::vector< MonitorElement * > Charge_Vs_PathlengthTIDM
 
std::vector< MonitorElement * > Charge_Vs_PathlengthTIDP
 
std::vector< MonitorElement * > Charge_Vs_PathlengthTOB
 
const std::vector< double > * chargeoverpath = 0
 
edm::EDGetTokenT< std::vector< double > > chargeoverpath_token_
 
DQMStoredbe
 
MonitorElementDiffWRTPrevGainTEC
 
MonitorElementDiffWRTPrevGainTIB
 
MonitorElementDiffWRTPrevGainTID
 
MonitorElementDiffWRTPrevGainTOB
 
bool doChargeMonitorPerPlane
 
std::vector< string > dqm_tag_
 
unsigned int ERun
 
unsigned int eventnumber =0
 
string EventPrefix_
 
string EventSuffix_
 
const std::vector< bool > * farfromedge = 0
 
edm::EDGetTokenT< std::vector< bool > > farfromedge_token_
 
bool FirstSetOfConstants
 
const std::vector< unsigned short > * firststrip = 0
 
edm::EDGetTokenT< std::vector< unsigned short > > firststrip_token_
 
MonitorElementGains
 
const std::vector< double > * gainused = 0
 
edm::EDGetTokenT< std::vector< double > > gainused_token_
 
const std::vector< double > * gainusedTick = 0
 
edm::EDGetTokenT< std::vector< double > > gainusedTick_token_
 
MonitorElementGainVsPrevGainTEC
 
MonitorElementGainVsPrevGainTIB
 
MonitorElementGainVsPrevGainTID
 
MonitorElementGainVsPrevGainTOB
 
unsigned int GOOD
 
const std::vector< double > * localdirx = 0
 
edm::EDGetTokenT< std::vector< double > > localdirx_token_
 
const std::vector< double > * localdiry = 0
 
edm::EDGetTokenT< std::vector< double > > localdiry_token_
 
const std::vector< double > * localdirz = 0
 
edm::EDGetTokenT< std::vector< double > > localdirz_token_
 
std::string m_calibrationMode
 
std::string m_calibrationPath
 
std::string m_DQMdir
 
bool m_harvestingMode
 
bool m_splitDQMstat
 
double MagFieldCurrentTh
 
unsigned int MASKED
 
double MaxChi2OverNDF
 
double MaxMPVError
 
unsigned int MaxNrStrips
 
double MaxTrackChiOverNdf
 
double MaxTrackEta
 
int MaxTrackingIteration
 
double MaxTrackMomentum
 
double MinNrEntries
 
double MinTrackEta
 
unsigned int MinTrackHits
 
double MinTrackMomentum
 
MonitorElementMPV_Vs_EtaTEC
 
MonitorElementMPV_Vs_EtaTECthick
 
MonitorElementMPV_Vs_EtaTECthin
 
MonitorElementMPV_Vs_EtaTIB
 
MonitorElementMPV_Vs_EtaTID
 
MonitorElementMPV_Vs_EtaTOB
 
MonitorElementMPV_Vs_PhiTEC
 
MonitorElementMPV_Vs_PhiTECthick
 
MonitorElementMPV_Vs_PhiTECthin
 
MonitorElementMPV_Vs_PhiTIB
 
MonitorElementMPV_Vs_PhiTID
 
MonitorElementMPV_Vs_PhiTOB
 
MonitorElementMPVError
 
MonitorElementMPVErrorVsEta
 
MonitorElementMPVErrorVsMPV
 
MonitorElementMPVErrorVsN
 
MonitorElementMPVErrorVsPhi
 
MonitorElementMPVs
 
MonitorElementMPVs320
 
MonitorElementMPVs500
 
MonitorElementMPVsTEC
 
MonitorElementMPVsTECM
 
MonitorElementMPVsTECM1
 
MonitorElementMPVsTECM2
 
MonitorElementMPVsTECP
 
MonitorElementMPVsTECP1
 
MonitorElementMPVsTECP2
 
MonitorElementMPVsTECthick
 
MonitorElementMPVsTECthin
 
MonitorElementMPVsTIB
 
MonitorElementMPVsTID
 
MonitorElementMPVsTIDM
 
MonitorElementMPVsTIDP
 
MonitorElementMPVsTOB
 
unsigned int NClusterPixel
 
unsigned int NClusterStrip
 
unsigned int NEvent
 
std::vector< APVGain::APVmonnewCharge
 
MonitorElementNoMPVfit
 
MonitorElementNoMPVmasked
 
int NPixelDets
 
int NStripAPVs
 
const std::vector< unsigned short > * nstrips = 0
 
edm::EDGetTokenT< std::vector< unsigned short > > nstrips_token_
 
unsigned int NTrack
 
bool OldGainRemoving
 
std::string OutputGains
 
const std::vector< bool > * overlapping = 0
 
edm::EDGetTokenT< std::vector< bool > > overlapping_token_
 
const std::vector< double > * path = 0
 
edm::EDGetTokenT< std::vector< double > > path_token_
 
const std::vector< unsigned int > * rawid = 0
 
edm::EDGetTokenT< std::vector< unsigned int > > rawid_token_
 
unsigned int runnumber =0
 
const std::vector< bool > * saturation = 0
 
edm::EDGetTokenT< std::vector< bool > > saturation_token_
 
bool saveSummary
 
unsigned int SRun
 
double tagCondition_GoodFrac
 
double tagCondition_NClusters
 
TFileServicetfs
 
const std::vector< int > * trackalgo = 0
 
edm::EDGetTokenT< std::vector< int > > trackalgo_token_
 
const std::vector< double > * trackchi2ndof = 0
 
edm::EDGetTokenT< std::vector< double > > trackchi2ndof_token_
 
const std::vector< double > * tracketa = 0
 
edm::EDGetTokenT< std::vector< double > > tracketa_token_
 
const std::vector< unsigned int > * trackhitsvalid = 0
 
edm::EDGetTokenT< std::vector< unsigned int > > trackhitsvalid_token_
 
const std::vector< int > * trackindex = 0
 
edm::EDGetTokenT< std::vector< int > > trackindex_token_
 
const std::vector< float > * trackp = 0
 
edm::EDGetTokenT< std::vector< float > > trackp_token_
 
const std::vector< double > * trackphi = 0
 
edm::EDGetTokenT< std::vector< double > > trackphi_token_
 
string TrackPrefix_
 
const std::vector< float > * trackpt = 0
 
edm::EDGetTokenT< std::vector< float > > trackpt_token_
 
string TrackSuffix_
 
const std::vector< bool > * TrigTech = 0
 
edm::EDGetTokenT< std::vector< bool > > TrigTech_token_
 
const TrackerTopologytTopo_
 
bool useCalibration
 
bool Validation
 
std::vector< std::string > VChargeHisto
 
vector< string > VInputFiles
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from ConditionDBWriter< SiStripApvGain >
void setDoStore (const bool doStore)
 When set to false the payload will not be written to the db. More...
 
void storeOnDbNow ()
 
cond::Time_t timeOfLastIOV ()
 
- 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 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 94 of file SiStripGainFromCalibTree.cc.

Constructor & Destructor Documentation

SiStripGainFromCalibTree::SiStripGainFromCalibTree ( const edm::ParameterSet iConfig)
explicit

Definition at line 341 of file SiStripGainFromCalibTree.cc.

References AlgoMode, AllowSaturation, amplitude_token_, CalibPrefix_, CalibrationLevel, CalibSuffix_, charge_token_, Charge_Vs_Index, Charge_Vs_PathlengthTECM1, Charge_Vs_PathlengthTECM2, Charge_Vs_PathlengthTECP1, Charge_Vs_PathlengthTECP2, Charge_Vs_PathlengthTIB, Charge_Vs_PathlengthTIDM, Charge_Vs_PathlengthTIDP, Charge_Vs_PathlengthTOB, chargeoverpath_token_, dbe, doChargeMonitorPerPlane, dqm_tag_, EventPrefix_, EventSuffix_, farfromedge_token_, FirstSetOfConstants, firststrip_token_, gainused_token_, gainusedTick_token_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), diffTwoXMLs::label, localdirx_token_, localdiry_token_, localdirz_token_, m_calibrationMode, m_calibrationPath, m_DQMdir, m_harvestingMode, m_splitDQMstat, MagFieldCurrentTh, MaxChi2OverNDF, MaxMPVError, MaxNrStrips, MaxTrackChiOverNdf, MaxTrackEta, MaxTrackingIteration, MaxTrackMomentum, MinNrEntries, MinTrackEta, MinTrackHits, MinTrackMomentum, nstrips_token_, OldGainRemoving, Utilities::operator, OutputGains, overlapping_token_, path_token_, rawid_token_, saturation_token_, saveSummary, AlCaHLTBitMon_QueryRunRegistry::string, tagCondition_GoodFrac, tagCondition_NClusters, trackalgo_token_, trackchi2ndof_token_, tracketa_token_, trackhitsvalid_token_, trackindex_token_, trackp_token_, trackphi_token_, TrackPrefix_, trackpt_token_, TrackSuffix_, TrigTech_token_, tTopo_, useCalibration, Validation, VChargeHisto, and VInputFiles.

342 {
343  OutputGains = iConfig.getParameter<std::string>("OutputGains");
344 
345  AlgoMode = iConfig.getUntrackedParameter<std::string>("AlgoMode", "CalibTree");
346  MagFieldCurrentTh = iConfig.getUntrackedParameter<double> ("MagFieldCurrentTh" , 2000.);
347  MinNrEntries = iConfig.getUntrackedParameter<double> ("minNrEntries" , 20);
348  MaxMPVError = iConfig.getUntrackedParameter<double> ("maxMPVError" , 500.0);
349  MaxChi2OverNDF = iConfig.getUntrackedParameter<double> ("maxChi2OverNDF" , 5.0);
350  MinTrackMomentum = iConfig.getUntrackedParameter<double> ("minTrackMomentum" , 3.0);
351  MaxTrackMomentum = iConfig.getUntrackedParameter<double> ("maxTrackMomentum" , 99999.0);
352  MinTrackEta = iConfig.getUntrackedParameter<double> ("minTrackEta" , -5.0);
353  MaxTrackEta = iConfig.getUntrackedParameter<double> ("maxTrackEta" , 5.0);
354  MaxNrStrips = iConfig.getUntrackedParameter<unsigned>("maxNrStrips" , 2);
355  MinTrackHits = iConfig.getUntrackedParameter<unsigned>("MinTrackHits" , 8);
356  MaxTrackChiOverNdf = iConfig.getUntrackedParameter<double> ("MaxTrackChiOverNdf" , 3);
357  MaxTrackingIteration = iConfig.getUntrackedParameter<int> ("MaxTrackingIteration" , 7);
358  AllowSaturation = iConfig.getUntrackedParameter<bool> ("AllowSaturation" , false);
359  FirstSetOfConstants = iConfig.getUntrackedParameter<bool> ("FirstSetOfConstants" , true);
360  Validation = iConfig.getUntrackedParameter<bool> ("Validation" , false);
361  OldGainRemoving = iConfig.getUntrackedParameter<bool> ("OldGainRemoving" , false);
362 
363  CalibrationLevel = iConfig.getUntrackedParameter<int> ("CalibrationLevel" , 0);
364  VInputFiles = iConfig.getUntrackedParameter<vector<string> > ("InputFiles");
365  VChargeHisto = iConfig.getUntrackedParameter<vector<string> > ("ChargeHisto");
366 
367 
368  useCalibration = iConfig.getUntrackedParameter<bool> ("UseCalibration" , false);
369  m_harvestingMode = iConfig.getUntrackedParameter<bool> ("harvestingMode" , false);
370  m_splitDQMstat = iConfig.getUntrackedParameter<bool> ("splitDQMstat" , false);
371  m_calibrationMode = iConfig.getUntrackedParameter<string> ("calibrationMode" , "StdBunch");
372  m_calibrationPath = iConfig.getUntrackedParameter<string> ("calibrationPath");
373  m_DQMdir = iConfig.getUntrackedParameter<string> ("DQMdir" , "AlCaReco/SiStripGains");
374 
375  tagCondition_NClusters = iConfig.getUntrackedParameter<double> ("NClustersForTagProd" , 2E8);
376  tagCondition_GoodFrac = iConfig.getUntrackedParameter<double> ("GoodFracForTagProd" , 0.95);
377 
378  saveSummary = iConfig.getUntrackedParameter<bool> ("saveSummary" , false);
379 
380  doChargeMonitorPerPlane = iConfig.getUntrackedParameter<bool> ("doChargeMonitorPerPlane", false);
381 
382 
383  // Gather DQM Service
385  dbe->setVerbose(10);
386 
387  //Set the monitoring element tag and store
388  dqm_tag_.reserve(7);
389  dqm_tag_.clear();
390  dqm_tag_.push_back( "StdBunch" ); // statistic collection from Standard Collision Bunch @ 3.8 T
391  dqm_tag_.push_back( "StdBunch0T" ); // statistic collection from Standard Collision Bunch @ 0 T
392  dqm_tag_.push_back( "AagBunch" ); // statistic collection from First Collision After Abort Gap @ 3.8 T
393  dqm_tag_.push_back( "AagBunch0T" ); // statistic collection from First Collision After Abort Gap @ 0 T
394  dqm_tag_.push_back( "IsoMuon" ); // statistic collection from Isolated Muon @ 3.8 T
395  dqm_tag_.push_back( "IsoMuon0T" ); // statistic collection from Isolated Muon @ 0 T
396  dqm_tag_.push_back( "Harvest" ); // statistic collection: Harvest
397 
398  Charge_Vs_Index.insert( Charge_Vs_Index.begin(), dqm_tag_.size(), nullptr);
399  //Charge_Vs_Index_Absolute.insert( Charge_Vs_Index_Absolute.begin(), dqm_tag_.size(), 0);
400  Charge_Vs_PathlengthTIB.insert( Charge_Vs_PathlengthTIB.begin(), dqm_tag_.size(), nullptr);
401  Charge_Vs_PathlengthTOB.insert( Charge_Vs_PathlengthTOB.begin(), dqm_tag_.size(), nullptr);
402  Charge_Vs_PathlengthTIDP.insert( Charge_Vs_PathlengthTIDP.begin(), dqm_tag_.size(), nullptr);
403  Charge_Vs_PathlengthTIDM.insert( Charge_Vs_PathlengthTIDM.begin(), dqm_tag_.size(), nullptr);
404  Charge_Vs_PathlengthTECP1.insert( Charge_Vs_PathlengthTECP1.begin(), dqm_tag_.size(), nullptr);
405  Charge_Vs_PathlengthTECP2.insert( Charge_Vs_PathlengthTECP2.begin(), dqm_tag_.size(), nullptr);
406  Charge_Vs_PathlengthTECM1.insert( Charge_Vs_PathlengthTECM1.begin(), dqm_tag_.size(), nullptr);
407  Charge_Vs_PathlengthTECM2.insert( Charge_Vs_PathlengthTECM2.begin(), dqm_tag_.size(), nullptr);
408 
409 
410 
411 
412  // configure token for gathering the ntuple variables
413  edm::ParameterSet swhallowgain_pset = iConfig.getUntrackedParameter<edm::ParameterSet>("gain");
414 
415  string label = swhallowgain_pset.getUntrackedParameter<string>("label");
416  CalibPrefix_ = swhallowgain_pset.getUntrackedParameter<string>("prefix");
417  CalibSuffix_ = swhallowgain_pset.getUntrackedParameter<string>("suffix");
418 
419  trackindex_token_ = consumes<std::vector<int> >(edm::InputTag(label, CalibPrefix_ + "trackindex" + CalibSuffix_));
420  rawid_token_ = consumes<std::vector<unsigned int> >(edm::InputTag(label, CalibPrefix_ + "rawid" + CalibSuffix_));
421  localdirx_token_ = consumes<std::vector<double> >(edm::InputTag(label, CalibPrefix_ + "localdirx" + CalibSuffix_));
422  localdiry_token_ = consumes<std::vector<double> >(edm::InputTag(label, CalibPrefix_ + "localdiry" + CalibSuffix_));
423  localdirz_token_ = consumes<std::vector<double> >(edm::InputTag(label, CalibPrefix_ + "localdirz" + CalibSuffix_));
424  firststrip_token_ = consumes<std::vector<unsigned short> >(edm::InputTag(label, CalibPrefix_ + "firststrip" + CalibSuffix_));
425  nstrips_token_ = consumes<std::vector<unsigned short> >(edm::InputTag(label, CalibPrefix_ + "nstrips" + CalibSuffix_));
426  saturation_token_ = consumes<std::vector<bool> >(edm::InputTag(label, CalibPrefix_ + "saturation" + CalibSuffix_));
427  overlapping_token_ = consumes<std::vector<bool> >(edm::InputTag(label, CalibPrefix_ + "overlapping" + CalibSuffix_));
428  farfromedge_token_ = consumes<std::vector<bool> >(edm::InputTag(label, CalibPrefix_ + "farfromedge" + CalibSuffix_));
429  charge_token_ = consumes<std::vector<unsigned int> >(edm::InputTag(label, CalibPrefix_ + "charge" + CalibSuffix_));
430  path_token_ = consumes<std::vector<double> >(edm::InputTag(label, CalibPrefix_ + "path" + CalibSuffix_));
431  chargeoverpath_token_ = consumes<std::vector<double> >(edm::InputTag(label, CalibPrefix_ + "chargeoverpath"+ CalibSuffix_));
432  amplitude_token_ = consumes<std::vector<unsigned char> >(edm::InputTag(label, CalibPrefix_ + "amplitude" + CalibSuffix_));
433  gainused_token_ = consumes<std::vector<double> >(edm::InputTag(label, CalibPrefix_ + "gainused" + CalibSuffix_));
434  gainusedTick_token_ = consumes<std::vector<double> >(edm::InputTag(label, CalibPrefix_ + "gainusedTick" + CalibSuffix_));
435 
436  edm::ParameterSet evtinfo_pset = iConfig.getUntrackedParameter<edm::ParameterSet>("evtinfo");
437  label = evtinfo_pset.getUntrackedParameter<string>("label");
438  EventPrefix_ = evtinfo_pset.getUntrackedParameter<string>("prefix");
439  EventSuffix_ = evtinfo_pset.getUntrackedParameter<string>("suffix");
440  TrigTech_token_ = consumes<std::vector<bool> >(edm::InputTag(label, EventPrefix_ + "TrigTech" + EventSuffix_));
441 
442  edm::ParameterSet track_pset = iConfig.getUntrackedParameter<edm::ParameterSet>("tracks");
443  label = track_pset.getUntrackedParameter<string>("label");
444  TrackPrefix_ = track_pset.getUntrackedParameter<string>("prefix");
445  TrackSuffix_ = track_pset.getUntrackedParameter<string>("suffix");
446 
447  trackchi2ndof_token_ = consumes<std::vector<double> >(edm::InputTag(label, TrackPrefix_ + "chi2ndof" + TrackSuffix_));
448  trackp_token_ = consumes<std::vector<float> >(edm::InputTag(label, TrackPrefix_ + "momentum" + TrackSuffix_));
449  trackpt_token_ = consumes<std::vector<float> >(edm::InputTag(label, TrackPrefix_ + "pt" + TrackSuffix_));
450  tracketa_token_ = consumes<std::vector<double> >(edm::InputTag(label, TrackPrefix_ + "eta" + TrackSuffix_));
451  trackphi_token_ = consumes<std::vector<double> >(edm::InputTag(label, TrackPrefix_ + "phi" + TrackSuffix_));
452  trackhitsvalid_token_ = consumes<std::vector<unsigned int> >(edm::InputTag(label, TrackPrefix_ + "hitsvalid" + TrackSuffix_));
453  trackalgo_token_ = consumes<std::vector<int> >(edm::InputTag(label, TrackPrefix_ + "algo" + TrackSuffix_));
454 
455  tTopo_ = nullptr;
456 }
edm::EDGetTokenT< std::vector< int > > trackindex_token_
std::vector< MonitorElement * > Charge_Vs_Index
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< std::vector< double > > tracketa_token_
edm::EDGetTokenT< std::vector< unsigned char > > amplitude_token_
edm::EDGetTokenT< std::vector< unsigned int > > rawid_token_
edm::EDGetTokenT< std::vector< bool > > overlapping_token_
const TrackerTopology * tTopo_
std::vector< MonitorElement * > Charge_Vs_PathlengthTOB
std::vector< MonitorElement * > Charge_Vs_PathlengthTECM1
std::vector< MonitorElement * > Charge_Vs_PathlengthTECM2
edm::EDGetTokenT< std::vector< bool > > farfromedge_token_
edm::EDGetTokenT< std::vector< unsigned int > > trackhitsvalid_token_
edm::EDGetTokenT< std::vector< double > > path_token_
edm::EDGetTokenT< std::vector< int > > trackalgo_token_
edm::EDGetTokenT< std::vector< float > > trackp_token_
edm::EDGetTokenT< std::vector< bool > > TrigTech_token_
edm::EDGetTokenT< std::vector< double > > chargeoverpath_token_
edm::EDGetTokenT< std::vector< double > > gainusedTick_token_
std::vector< MonitorElement * > Charge_Vs_PathlengthTECP1
edm::EDGetTokenT< std::vector< double > > localdirz_token_
std::vector< MonitorElement * > Charge_Vs_PathlengthTIDM
edm::EDGetTokenT< std::vector< unsigned int > > charge_token_
edm::EDGetTokenT< std::vector< unsigned short > > nstrips_token_
std::vector< MonitorElement * > Charge_Vs_PathlengthTECP2
std::vector< MonitorElement * > Charge_Vs_PathlengthTIB
edm::EDGetTokenT< std::vector< unsigned short > > firststrip_token_
edm::EDGetTokenT< std::vector< float > > trackpt_token_
std::vector< std::string > VChargeHisto
edm::EDGetTokenT< std::vector< double > > localdirx_token_
edm::EDGetTokenT< std::vector< bool > > saturation_token_
edm::EDGetTokenT< std::vector< double > > trackchi2ndof_token_
std::vector< MonitorElement * > Charge_Vs_PathlengthTIDP
edm::EDGetTokenT< std::vector< double > > localdiry_token_
edm::EDGetTokenT< std::vector< double > > gainused_token_
edm::EDGetTokenT< std::vector< double > > trackphi_token_
SiStripGainFromCalibTree::~SiStripGainFromCalibTree ( )
override

Definition at line 1648 of file SiStripGainFromCalibTree.cc.

References a, sistrip::APV, APVsColl, and APVsCollOrdered.

1649 {
1650  APVsColl.clear();
1651  for(unsigned int a=0;a<APVsCollOrdered.size();a++) {
1653  if(APV!=nullptr) delete APV;
1654  }
1655  APVsCollOrdered.clear();
1656 }
std::vector< stAPVGain * > APVsCollOrdered
std::unordered_map< unsigned int, stAPVGain * > APVsColl
double a
Definition: hdecay.h:121

Member Function Documentation

void SiStripGainFromCalibTree::algoAnalyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Reimplemented from ConditionDBWriter< SiStripApvGain >.

Definition at line 1683 of file SiStripGainFromCalibTree.cc.

References AlgoMode, amplitude, amplitude_token_, charge, charge_token_, chargeoverpath, chargeoverpath_token_, connect(), DEFINE_FWK_MODULE, edm::EventID::event(), eventnumber, farfromedge, farfromedge_token_, firststrip, firststrip_token_, gainused, gainused_token_, gainusedTick, gainusedTick_token_, edm::EventBase::id(), localdirx, localdirx_token_, localdiry, localdiry_token_, localdirz, localdirz_token_, m_harvestingMode, nstrips, nstrips_token_, overlapping, overlapping_token_, path, path_token_, processEvent(), rawid, rawid_token_, edm::EventID::run(), runnumber, saturation, saturation_token_, trackalgo, trackalgo_token_, trackchi2ndof, trackchi2ndof_token_, tracketa, tracketa_token_, trackhitsvalid, trackhitsvalid_token_, trackindex, trackindex_token_, trackp, trackp_token_, trackphi, trackphi_token_, trackpt, trackpt_token_, TrigTech, and TrigTech_token_.

1684 {
1685  // in AlCaHarvesting mode we just need to run the logic in the endJob step
1686  if(m_harvestingMode) return;
1687 
1688  if(AlgoMode=="CalibTree")return;
1689 
1690  eventnumber = iEvent.id().event();
1691  runnumber = iEvent.id().run();
1692  auto handle01 = connect(TrigTech , TrigTech_token_ , iEvent);
1693  auto handle02 = connect(trackchi2ndof , trackchi2ndof_token_ , iEvent);
1694  auto handle03 = connect(trackp , trackp_token_ , iEvent);
1695  auto handle04 = connect(trackpt , trackpt_token_ , iEvent);
1696  auto handle05 = connect(tracketa , tracketa_token_ , iEvent);
1697  auto handle06 = connect(trackphi , trackphi_token_ , iEvent);
1698  auto handle07 = connect(trackhitsvalid, trackhitsvalid_token_, iEvent);
1699  auto handle08 = connect(trackindex , trackindex_token_ , iEvent);
1700  auto handle09 = connect(rawid , rawid_token_ , iEvent);
1701  auto handle11 = connect(localdirx , localdirx_token_ , iEvent);
1702  auto handle12 = connect(localdiry , localdiry_token_ , iEvent);
1703  auto handle13 = connect(localdirz , localdirz_token_ , iEvent);
1704  auto handle14 = connect(firststrip , firststrip_token_ , iEvent);
1705  auto handle15 = connect(nstrips , nstrips_token_ , iEvent);
1706  auto handle16 = connect(saturation , saturation_token_ , iEvent);
1707  auto handle17 = connect(overlapping , overlapping_token_ , iEvent);
1708  auto handle18 = connect(farfromedge , farfromedge_token_ , iEvent);
1709  auto handle19 = connect(charge , charge_token_ , iEvent);
1710  auto handle21 = connect(path , path_token_ , iEvent);
1711  auto handle22 = connect(chargeoverpath, chargeoverpath_token_, iEvent);
1712  auto handle23 = connect(amplitude , amplitude_token_ , iEvent);
1713  auto handle24 = connect(gainused , gainused_token_ , iEvent);
1714  auto handle25 = connect(gainusedTick , gainusedTick_token_ , iEvent);
1715  auto handle26 = connect(trackalgo , trackalgo_token_ , iEvent);
1716 
1717  processEvent();
1718 }
RunNumber_t run() const
Definition: EventID.h:39
edm::EDGetTokenT< std::vector< int > > trackindex_token_
EventNumber_t event() const
Definition: EventID.h:41
const std::vector< float > * trackp
edm::EDGetTokenT< std::vector< double > > tracketa_token_
edm::EDGetTokenT< std::vector< unsigned char > > amplitude_token_
const std::vector< double > * chargeoverpath
edm::EDGetTokenT< std::vector< unsigned int > > rawid_token_
const std::vector< unsigned char > * amplitude
const std::vector< double > * localdirz
const std::vector< double > * trackchi2ndof
const std::vector< double > * localdirx
const std::vector< double > * gainusedTick
const std::vector< unsigned int > * rawid
edm::EDGetTokenT< std::vector< bool > > overlapping_token_
edm::Handle< T > connect(const T *&ptr, edm::EDGetTokenT< T > token, const edm::Event &evt)
const std::vector< int > * trackalgo
const std::vector< float > * trackpt
const std::vector< unsigned int > * trackhitsvalid
edm::EDGetTokenT< std::vector< bool > > farfromedge_token_
edm::EDGetTokenT< std::vector< unsigned int > > trackhitsvalid_token_
edm::EDGetTokenT< std::vector< double > > path_token_
edm::EDGetTokenT< std::vector< int > > trackalgo_token_
edm::EDGetTokenT< std::vector< float > > trackp_token_
edm::EDGetTokenT< std::vector< bool > > TrigTech_token_
edm::EDGetTokenT< std::vector< double > > chargeoverpath_token_
edm::EDGetTokenT< std::vector< double > > gainusedTick_token_
const std::vector< double > * gainused
edm::EDGetTokenT< std::vector< double > > localdirz_token_
const std::vector< unsigned short > * firststrip
const std::vector< double > * localdiry
edm::EDGetTokenT< std::vector< unsigned int > > charge_token_
edm::EDGetTokenT< std::vector< unsigned short > > nstrips_token_
const std::vector< int > * trackindex
edm::EDGetTokenT< std::vector< unsigned short > > firststrip_token_
edm::EDGetTokenT< std::vector< float > > trackpt_token_
const std::vector< bool > * overlapping
const std::vector< bool > * saturation
const std::vector< bool > * farfromedge
const std::vector< bool > * TrigTech
edm::EventID id() const
Definition: EventBase.h:60
edm::EDGetTokenT< std::vector< double > > localdirx_token_
edm::EDGetTokenT< std::vector< bool > > saturation_token_
edm::EDGetTokenT< std::vector< double > > trackchi2ndof_token_
edm::EDGetTokenT< std::vector< double > > localdiry_token_
const std::vector< unsigned int > * charge
const std::vector< double > * path
const std::vector< double > * trackphi
const std::vector< unsigned short > * nstrips
edm::EDGetTokenT< std::vector< double > > gainused_token_
edm::EDGetTokenT< std::vector< double > > trackphi_token_
const std::vector< double > * tracketa
void SiStripGainFromCalibTree::algoAnalyzeTheTree ( )
private

Definition at line 1222 of file SiStripGainFromCalibTree.cc.

References amplitude, CalibPrefix_, CalibSuffix_, charge, chargeoverpath, eventnumber, EventPrefix_, EventSuffix_, farfromedge, firststrip, gainused, gainusedTick, mps_fire::i, localdirx, localdiry, localdirz, m_calibrationMode, NEvent, nstrips, overlapping, path, processEvent(), rawid, runnumber, saturation, mps_setup::stdout, trackalgo, trackchi2ndof, tracketa, trackhitsvalid, trackindex, trackp, trackphi, TrackPrefix_, trackpt, TrackSuffix_, TrigTech, and VInputFiles.

Referenced by algoEndJob().

1223 {
1224  for(unsigned int i=0;i<VInputFiles.size();i++){
1225  printf("Openning file %3i/%3i --> %s\n",i+1, (int)VInputFiles.size(), (char*)(VInputFiles[i].c_str())); fflush(stdout);
1226  TFile *tfile = TFile::Open(VInputFiles[i].c_str());
1227  TString tree_path = TString::Format("gainCalibrationTree%s/tree",m_calibrationMode.c_str());
1228  TTree* tree = dynamic_cast<TTree*> (tfile->Get(tree_path.Data()));
1229 
1230  tree->SetBranchAddress((EventPrefix_ + "event" + EventSuffix_).c_str(), &eventnumber , nullptr);
1231  tree->SetBranchAddress((EventPrefix_ + "run" + EventSuffix_).c_str(), &runnumber , nullptr);
1232  tree->SetBranchAddress((EventPrefix_ + "TrigTech" + EventSuffix_).c_str(), &TrigTech , nullptr);
1233 
1234  tree->SetBranchAddress((TrackPrefix_ + "chi2ndof" + TrackSuffix_).c_str(), &trackchi2ndof , nullptr);
1235  tree->SetBranchAddress((TrackPrefix_ + "momentum" + TrackSuffix_).c_str(), &trackp , nullptr);
1236  tree->SetBranchAddress((TrackPrefix_ + "pt" + TrackSuffix_).c_str(), &trackpt , nullptr);
1237  tree->SetBranchAddress((TrackPrefix_ + "eta" + TrackSuffix_).c_str(), &tracketa , nullptr);
1238  tree->SetBranchAddress((TrackPrefix_ + "phi" + TrackSuffix_).c_str(), &trackphi , nullptr);
1239  tree->SetBranchAddress((TrackPrefix_ + "hitsvalid" + TrackSuffix_).c_str(), &trackhitsvalid, nullptr);
1240  tree->SetBranchAddress((TrackPrefix_ + "algo" + TrackSuffix_).c_str(), &trackalgo , nullptr);
1241 
1242  tree->SetBranchAddress((CalibPrefix_ + "trackindex" + CalibSuffix_).c_str(), &trackindex , nullptr);
1243  tree->SetBranchAddress((CalibPrefix_ + "rawid" + CalibSuffix_).c_str(), &rawid , nullptr);
1244  tree->SetBranchAddress((CalibPrefix_ + "localdirx" + CalibSuffix_).c_str(), &localdirx , nullptr);
1245  tree->SetBranchAddress((CalibPrefix_ + "localdiry" + CalibSuffix_).c_str(), &localdiry , nullptr);
1246  tree->SetBranchAddress((CalibPrefix_ + "localdirz" + CalibSuffix_).c_str(), &localdirz , nullptr);
1247  tree->SetBranchAddress((CalibPrefix_ + "firststrip" + CalibSuffix_).c_str(), &firststrip , nullptr);
1248  tree->SetBranchAddress((CalibPrefix_ + "nstrips" + CalibSuffix_).c_str(), &nstrips , nullptr);
1249  tree->SetBranchAddress((CalibPrefix_ + "saturation" + CalibSuffix_).c_str(), &saturation , nullptr);
1250  tree->SetBranchAddress((CalibPrefix_ + "overlapping" + CalibSuffix_).c_str(), &overlapping , nullptr);
1251  tree->SetBranchAddress((CalibPrefix_ + "farfromedge" + CalibSuffix_).c_str(), &farfromedge , nullptr);
1252  tree->SetBranchAddress((CalibPrefix_ + "charge" + CalibSuffix_).c_str(), &charge , nullptr);
1253  tree->SetBranchAddress((CalibPrefix_ + "path" + CalibSuffix_).c_str(), &path , nullptr);
1254  tree->SetBranchAddress((CalibPrefix_ + "chargeoverpath" + CalibSuffix_).c_str(), &chargeoverpath, nullptr);
1255  tree->SetBranchAddress((CalibPrefix_ + "amplitude" + CalibSuffix_).c_str(), &amplitude , nullptr);
1256  tree->SetBranchAddress((CalibPrefix_ + "gainused" + CalibSuffix_).c_str(), &gainused , nullptr);
1257  tree->SetBranchAddress((CalibPrefix_ + "gainusedTick" + CalibSuffix_).c_str(), &gainusedTick , nullptr);
1258 
1259 
1260  unsigned int nentries = tree->GetEntries();
1261  printf("Number of Events = %i + %i = %i\n",NEvent,nentries,(NEvent+nentries));
1262  printf("Progressing Bar :0%% 20%% 40%% 60%% 80%% 100%%\n");
1263  printf("Looping on the Tree :");
1264  int TreeStep = nentries/50;if(TreeStep<=1)TreeStep=1;
1265  for (unsigned int ientry = 0; ientry < tree->GetEntries(); ientry++) {
1266  if(ientry%TreeStep==0){printf(".");fflush(stdout);}
1267  tree->GetEntry(ientry);
1268  processEvent();
1269  }printf("\n");// END OF EVENT LOOP
1270  }
1271 }
const std::vector< float > * trackp
const std::vector< double > * chargeoverpath
const std::vector< unsigned char > * amplitude
const std::vector< double > * localdirz
const std::vector< double > * trackchi2ndof
const std::vector< double > * localdirx
const std::vector< double > * gainusedTick
const std::vector< unsigned int > * rawid
const std::vector< int > * trackalgo
const std::vector< float > * trackpt
const std::vector< unsigned int > * trackhitsvalid
Definition: tfile.py:1
const std::vector< double > * gainused
const std::vector< unsigned short > * firststrip
const std::vector< double > * localdiry
const std::vector< int > * trackindex
const std::vector< bool > * overlapping
const std::vector< bool > * saturation
const std::vector< bool > * farfromedge
const std::vector< bool > * TrigTech
Definition: tree.py:1
const std::vector< unsigned int > * charge
const std::vector< double > * path
const std::vector< double > * trackphi
const std::vector< unsigned short > * nstrips
const std::vector< double > * tracketa
void SiStripGainFromCalibTree::algoBeginJob ( const edm::EventSetup iSetup)
overrideprivatevirtual

Reimplemented from ConditionDBWriter< SiStripApvGain >.

Definition at line 632 of file SiStripGainFromCalibTree.cc.

References AlgoMode, sistrip::APV, stAPVGain::APVId, APVsColl, APVsCollOrdered, BAD, stAPVGain::Bin, bookDQMHistos(), stAPVGain::DetId, TrackerGeometry::dets(), dqm_tag_, HTMLExport::elem(), ERun, stAPVGain::Eta, stAPVGain::FitChi2, stAPVGain::FitMPV, stAPVGain::FitMPVErr, stAPVGain::FitNorm, stAPVGain::FitWidth, stAPVGain::FitWidthErr, stAPVGain::Gain, edm::EventSetup::get(), GOOD, mps_fire::i, stAPVGain::Index, isBFieldConsistentWithMode(), stAPVGain::isMasked, m_calibrationMode, m_DQMdir, m_harvestingMode, m_splitDQMstat, MakeCalibrationMap(), MASKED, NClusterPixel, NClusterStrip, PixelTopology::ncolumns(), stAPVGain::NEntries, NEvent, NPixelDets, PixelTopology::nrows(), NStripAPVs, StripTopology::nstrips(), NTrack, or, stAPVGain::Phi, PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, stAPVGain::PreviousGain, stAPVGain::PreviousGainTick, stAPVGain::R, DetId::rawId(), SRun, statCollectionFromMode(), AlCaHLTBitMon_QueryRunRegistry::string, stAPVGain::SubDet, ntupleEnum::SubDet, DetId::subdetId(), swapBFieldMode(), StripSubdetector::TEC, stAPVGain::Thickness, StripSubdetector::TIB, StripSubdetector::TID, StripSubdetector::TOB, tTopo_, stAPVGain::x, stAPVGain::y, and stAPVGain::z.

633 {
634  edm::LogInfo("SiStripGainFromCalibTree") << "AlgoMode : " << AlgoMode << "\n"
635  << "CalibrationMode : " << m_calibrationMode << "\n"
636  << "HarvestingMode : " << m_harvestingMode << std::endl;
637  //Setup DQM histograms
638  if(AlgoMode != "PCL" or m_harvestingMode) {
639  const char * dqm_dir = "AlCaReco/SiStripGainsHarvesting/";
640  this->bookDQMHistos( dqm_dir, dqm_tag_[statCollectionFromMode(m_calibrationMode.c_str())].c_str() );
641  } else {
642  //Check consistency of calibration Mode and BField only for the ALCAPROMPT in the PCL workflow
643  if (!isBFieldConsistentWithMode(iSetup)) {
644  string prevMode = m_calibrationMode;
645  swapBFieldMode();
646  edm::LogInfo("SiStripGainFromCalibTree") << "Switching calibration mode for endorsing BField status: "
647  << prevMode << " ==> " << m_calibrationMode << std::endl;
648  }
649  std::string dqm_dir = m_DQMdir + ((m_splitDQMstat)? m_calibrationMode:"") + "/";
651  this->bookDQMHistos( dqm_dir.c_str(), dqm_tag_[elem].c_str() );
652  }
653 
655  iSetup.get<TrackerTopologyRcd>().get( TopoHandle );
656  tTopo_ = TopoHandle.product();
657 
659  iSetup.get<TrackerDigiGeometryRecord>().get( tkGeom );
660  auto const & Det = tkGeom->dets();
661 
662 
663  NPixelDets = 0;
664  NStripAPVs = 0;
665  unsigned int Index=0;
666  for(unsigned int i=0;i<Det.size();i++){
667  DetId Detid = Det[i]->geographicalId();
668  int SubDet = Detid.subdetId();
669 
670  if( SubDet == StripSubdetector::TIB || SubDet == StripSubdetector::TID ||
671  SubDet == StripSubdetector::TOB || SubDet == StripSubdetector::TEC ){
672 
673  auto DetUnit = dynamic_cast<const StripGeomDetUnit*> (Det[i]);
674  if(!DetUnit)continue;
675 
676  const StripTopology& Topo = DetUnit->specificTopology();
677  unsigned int NAPV = Topo.nstrips()/128;
678 
679  for(unsigned int j=0;j<NAPV;j++){
680  stAPVGain* APV = new stAPVGain;
681  APV->Index = Index;
682  APV->Bin = -1;
683  APV->DetId = Detid.rawId();
684  APV->APVId = j;
685  APV->SubDet = SubDet;
686  APV->FitMPV = -1;
687  APV->FitMPVErr = -1;
688  APV->FitWidth = -1;
689  APV->FitWidthErr = -1;
690  APV->FitChi2 = -1;
691  APV->FitNorm = -1;
692  APV->Gain = -1;
693  APV->PreviousGain = 1;
694  APV->PreviousGainTick = 1;
695  APV->x = DetUnit->position().basicVector().x();
696  APV->y = DetUnit->position().basicVector().y();
697  APV->z = DetUnit->position().basicVector().z();
698  APV->Eta = DetUnit->position().basicVector().eta();
699  APV->Phi = DetUnit->position().basicVector().phi();
700  APV->R = DetUnit->position().basicVector().transverse();
701  APV->Thickness = DetUnit->surface().bounds().thickness();
702  APV->NEntries = 0;
703  APV->isMasked = false;
704 
705  APVsCollOrdered.push_back(APV);
706  APVsColl[(APV->DetId<<4) | APV->APVId] = APV;
707  Index++;
708  NStripAPVs++;
709  }
710  }
711  }
712 
713  for(unsigned int i=0;i<Det.size();i++){ //Make two loop such that the Pixel information is added at the end --> make transition simpler
714  DetId Detid = Det[i]->geographicalId();
715  int SubDet = Detid.subdetId();
717  auto DetUnit = dynamic_cast<const PixelGeomDetUnit*> (Det[i]);
718  if(!DetUnit) continue;
719 
720  const PixelTopology& Topo = DetUnit->specificTopology();
721  unsigned int NROCRow = Topo.nrows()/(80.);
722  unsigned int NROCCol = Topo.ncolumns()/(52.);
723 
724  for(unsigned int j=0;j<NROCRow;j++){
725  for(unsigned int i=0;i<NROCCol;i++){
726 
727  stAPVGain* APV = new stAPVGain;
728  APV->Index = Index;
729  APV->Bin = -1;
730  APV->DetId = Detid.rawId();
731  APV->APVId = (j<<3 | i);
732  APV->SubDet = SubDet;
733  APV->FitMPV = -1;
734  APV->FitMPVErr = -1;
735  APV->FitWidth = -1;
736  APV->FitWidthErr = -1;
737  APV->FitChi2 = -1;
738  APV->Gain = -1;
739  APV->PreviousGain = 1;
740  APV->PreviousGainTick = 1;
741  APV->x = DetUnit->position().basicVector().x();
742  APV->y = DetUnit->position().basicVector().y();
743  APV->z = DetUnit->position().basicVector().z();
744  APV->Eta = DetUnit->position().basicVector().eta();
745  APV->Phi = DetUnit->position().basicVector().phi();
746  APV->R = DetUnit->position().basicVector().transverse();
747  APV->Thickness = DetUnit->surface().bounds().thickness();
748  APV->isMasked = false; //SiPixelQuality_->IsModuleBad(Detid.rawId());
749  APV->NEntries = 0;
750 
751  APVsCollOrdered.push_back(APV);
752  APVsColl[(APV->DetId<<4) | APV->APVId] = APV;
753  Index++;
754  NPixelDets++;
755  }}
756  }
757  }
758 
759 
761 
762  NEvent = 0;
763  NTrack = 0;
764  NClusterStrip = 0;
765  NClusterPixel = 0;
766  SRun = 1<<31;
767  ERun = 0;
768  GOOD = 0;
769  BAD = 0;
770  MASKED = 0;
771 }
virtual int nrows() const =0
double FitMPV
Definition: APVGainStruct.h:19
bool isBFieldConsistentWithMode(const edm::EventSetup &iSetup) const
double PreviousGainTick
Definition: APVGainStruct.h:28
unsigned int APVId
Definition: APVGainStruct.h:10
float Thickness
Definition: APVGainStruct.h:18
const TrackerTopology * tTopo_
unsigned int DetId
Definition: APVGainStruct.h:9
bool isMasked
Definition: APVGainStruct.h:32
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
const DetContainer & dets() const override
Returm a vector of all GeomDet (including all GeomDetUnits)
std::vector< stAPVGain * > APVsCollOrdered
double FitWidth
Definition: APVGainStruct.h:21
double Gain
Definition: APVGainStruct.h:25
double PreviousGain
Definition: APVGainStruct.h:27
std::unordered_map< unsigned int, stAPVGain * > APVsColl
unsigned int Index
Definition: APVGainStruct.h:7
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
double FitNorm
Definition: APVGainStruct.h:24
double FitMPVErr
Definition: APVGainStruct.h:20
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:37
def elem(elemtype, innerHTML='', html_class='', kwargs)
Definition: HTMLExport.py:18
double FitChi2
Definition: APVGainStruct.h:23
Definition: DetId.h:18
int statCollectionFromMode(const char *tag) const
virtual int nstrips() const =0
const T & get() const
Definition: EventSetup.h:55
double NEntries
Definition: APVGainStruct.h:29
virtual int ncolumns() const =0
unsigned int SubDet
Definition: APVGainStruct.h:11
void bookDQMHistos(const char *dqm_dir, const char *tag)
double FitWidthErr
Definition: APVGainStruct.h:22
void SiStripGainFromCalibTree::algoBeginRun ( const edm::Run run,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Reimplemented from ConditionDBWriter< SiStripApvGain >.

Definition at line 792 of file SiStripGainFromCalibTree.cc.

References a, AlgoMode, sistrip::APV, stAPVGain::APVId, APVsCollOrdered, stAPVGain::DetId, cmsRelvalreport::exit, edm::EventSetup::get(), SiStripGain::getApvGain(), SiStripGain::getNumberOfTags(), SiStripGain::getRange(), SiStripQuality::IsApvBad(), isBFieldConsistentWithMode(), stAPVGain::isMasked, edm::ESHandleBase::isValid(), m_calibrationMode, m_harvestingMode, PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, stAPVGain::PreviousGain, stAPVGain::PreviousGainTick, mps_setup::stdout, stAPVGain::SubDet, and swapBFieldMode().

793 {
794  if( !m_harvestingMode && AlgoMode=="PCL") {
795  //Check consistency of calibration Mode and BField only for the ALCAPROMPT in the PCL workflow
796  if (!isBFieldConsistentWithMode(iSetup)) {
797  string prevMode = m_calibrationMode;
798  swapBFieldMode();
799  edm::LogInfo("SiStripGainFromCalibTree") << "Switching calibration mode for endorsing BField status: "
800  << prevMode << " ==> " << m_calibrationMode << std::endl;
801  }
802  }
803 
804  edm::ESHandle<SiStripGain> gainHandle;
805  iSetup.get<SiStripGainRcd>().get(gainHandle);
806  if(!gainHandle.isValid()){edm::LogError("SiStripGainFromCalibTree")<< "gainHandle is not valid\n"; exit(0);}
807 
808  edm::ESHandle<SiStripQuality> SiStripQuality_;
809  iSetup.get<SiStripQualityRcd>().get(SiStripQuality_);
810 
811  for(unsigned int a=0;a<APVsCollOrdered.size();a++){
812 
814 
815  // MM. 03/03/2017 all of this makes sense only for SiStrip (i.e. get me out of here if I am on a pixel ROC)
817 
818  APV->isMasked = SiStripQuality_->IsApvBad(APV->DetId,APV->APVId);
819  // if(!FirstSetOfConstants){
820 
821  if(gainHandle->getNumberOfTags()!=2){edm::LogError("SiStripGainFromCalibTree")<< "NUMBER OF GAIN TAG IS EXPECTED TO BE 2\n";fflush(stdout);exit(0);};
822  float newPreviousGain = gainHandle->getApvGain(APV->APVId,gainHandle->getRange(APV->DetId, 1),1);
823  if(APV->PreviousGain!=1 and newPreviousGain!=APV->PreviousGain)edm::LogWarning("SiStripGainFromCalibTree")<< "WARNING: ParticleGain in the global tag changed\n";
824  APV->PreviousGain = newPreviousGain;
825 
826  float newPreviousGainTick = gainHandle->getApvGain(APV->APVId,gainHandle->getRange(APV->DetId, 0),0);
827  if(APV->PreviousGainTick!=1 and newPreviousGainTick!=APV->PreviousGainTick){
828  edm::LogWarning("SiStripGainFromCalibTree")<< "WARNING: TickMarkGain in the global tag changed\n"<< std::endl
829  <<" APV->SubDet: "<< APV->SubDet << " APV->APVId:" << APV->APVId << std::endl
830  <<" APV->PreviousGainTick: "<<APV->PreviousGainTick<<" newPreviousGainTick: "<<newPreviousGainTick<<std::endl;
831  }
832  APV->PreviousGainTick = newPreviousGainTick;
833 
834  //printf("DETID = %7i APVID=%1i Previous Gain=%8.4f (G1) x %8.4f (G2)\n",APV->DetId,APV->APVId,APV->PreviousGainTick, APV->PreviousGain);
835  // }
836 
837  }
838 }
bool IsApvBad(const uint32_t &detid, const short &apvNb) const
bool isBFieldConsistentWithMode(const edm::EventSetup &iSetup) const
double PreviousGainTick
Definition: APVGainStruct.h:28
size_t getNumberOfTags() const
Definition: SiStripGain.h:91
unsigned int APVId
Definition: APVGainStruct.h:10
unsigned int DetId
Definition: APVGainStruct.h:9
bool isMasked
Definition: APVGainStruct.h:32
static float getApvGain(const uint16_t &apv, const SiStripApvGain::Range &range)
Definition: SiStripGain.h:73
std::vector< stAPVGain * > APVsCollOrdered
double PreviousGain
Definition: APVGainStruct.h:27
const T & get() const
Definition: EventSetup.h:55
double a
Definition: hdecay.h:121
bool isValid() const
Definition: ESHandle.h:47
unsigned int SubDet
Definition: APVGainStruct.h:11
const SiStripApvGain::Range getRange(uint32_t detID) const
Definition: SiStripGain.h:70
void SiStripGainFromCalibTree::algoComputeMPVandGain ( )
private

Definition at line 1275 of file SiStripGainFromCalibTree.cc.

References AlgoMode, sistrip::APV, stAPVGain::APVId, APVsColl, BAD, stAPVGain::Bin, CalibrationLevel, Charge_Vs_Index, stAPVGain::DetId, stAPVGain::FitChi2, stAPVGain::FitMPV, stAPVGain::FitMPVErr, stAPVGain::FitNorm, stAPVGain::FitWidth, stAPVGain::FitWidthErr, stAPVGain::Gain, getPeakOfLandau(), GOOD, Harvest, Exhume::I, mps_fire::i, stAPVGain::Index, IsGoodLandauFit(), stAPVGain::isMasked, m_calibrationMode, MASKED, stAPVGain::NEntries, stAPVGain::PreviousGain, statCollectionFromMode(), mps_setup::stdout, and stAPVGain::SubDet.

Referenced by algoEndJob().

1275  {
1276  unsigned int I=0;
1277  TH1F* Proj = nullptr;
1278  double FitResults[6];
1279  double MPVmean = 300;
1280 
1281  int elepos = (AlgoMode == "PCL")? Harvest : statCollectionFromMode(m_calibrationMode.c_str());
1282 
1283  if ( Charge_Vs_Index[elepos]==nullptr ) {
1284  edm::LogError("SiStripGainFromCalibTree") << "Harvesting: could not execute algoComputeMPVandGain method because "
1285  << m_calibrationMode.c_str() << " statistics cannot be retrieved.\n"
1286  << "Please check if input contains "
1287  << m_calibrationMode.c_str() << " data." << std::endl;
1288  return;
1289  }
1290 
1291  TH2S *chvsidx = (Charge_Vs_Index[elepos])->getTH2S();
1292 
1293 
1294  printf("Progressing Bar :0%% 20%% 40%% 60%% 80%% 100%%\n");
1295  printf("Fitting Charge Distribution :");
1296  int TreeStep = APVsColl.size()/50;
1297  for(auto it = APVsColl.begin();it!=APVsColl.end();it++,I++){
1298  if(I%TreeStep==0){printf(".");fflush(stdout);}
1299  stAPVGain* APV = it->second;
1300  if(APV->Bin<0) APV->Bin = chvsidx->GetXaxis()->FindBin(APV->Index);
1301 
1302  if(APV->isMasked){APV->Gain=APV->PreviousGain; MASKED++; continue;}
1303 
1304  Proj = (TH1F*)(chvsidx->ProjectionY("",chvsidx->GetXaxis()->FindBin(APV->Index),chvsidx->GetXaxis()->FindBin(APV->Index),"e"));
1305  if(!Proj)continue;
1306 
1307  if(CalibrationLevel==0){
1308  }else if(CalibrationLevel==1){
1309  int SecondAPVId = APV->APVId;
1310  if(SecondAPVId%2==0){ SecondAPVId = SecondAPVId+1; }else{ SecondAPVId = SecondAPVId-1; }
1311  stAPVGain* APV2 = APVsColl[(APV->DetId<<4) | SecondAPVId];
1312  if(APV2->Bin<0) APV2->Bin = chvsidx->GetXaxis()->FindBin(APV2->Index);
1313  TH1F* Proj2 = (TH1F*)(chvsidx->ProjectionY("",APV2->Bin,APV2->Bin,"e"));
1314  if(Proj2){Proj->Add(Proj2,1);delete Proj2;}
1315  }else if(CalibrationLevel==2){
1316  for(unsigned int i=0;i<16;i++){ //loop up to 6APV for Strip and up to 16 for Pixels
1317  auto tmpit = APVsColl.find((APV->DetId<<4) | i);
1318  if(tmpit==APVsColl.end())continue;
1319  stAPVGain* APV2 = tmpit->second;
1320  if(APV2->DetId != APV->DetId || APV2->APVId == APV->APVId)continue;
1321  if(APV2->Bin<0) APV2->Bin = chvsidx->GetXaxis()->FindBin(APV2->Index);
1322  TH1F* Proj2 = (TH1F*)(chvsidx->ProjectionY("",APV2->Bin,APV2->Bin,"e"));
1323  if(Proj2){Proj->Add(Proj2,1);delete Proj2;}
1324  }
1325  }else{
1326  CalibrationLevel = 0;
1327  printf("Unknown Calibration Level, will assume %i\n",CalibrationLevel);
1328  }
1329 
1330  getPeakOfLandau(Proj,FitResults);
1331  APV->FitMPV = FitResults[0];
1332  APV->FitMPVErr = FitResults[1];
1333  APV->FitWidth = FitResults[2];
1334  APV->FitWidthErr = FitResults[3];
1335  APV->FitChi2 = FitResults[4];
1336  APV->FitNorm = FitResults[5];
1337  APV->NEntries = Proj->GetEntries();
1338 
1339  if(IsGoodLandauFit(FitResults)){
1340  APV->Gain = APV->FitMPV / MPVmean;
1341  if(APV->SubDet>2)GOOD++;
1342  }else{
1343  APV->Gain = APV->PreviousGain;
1344  if(APV->SubDet>2)BAD++;
1345  }
1346  if(APV->Gain<=0) APV->Gain = 1;
1347 
1348  //printf("%5i/%5i: %6i - %1i %5E Entries --> MPV = %f +- %f\n",I,APVsColl.size(),APV->DetId, APV->APVId, Proj->GetEntries(), FitResults[0], FitResults[1]);fflush(stdout);
1349  delete Proj;
1350  }printf("\n");
1351 }
std::vector< MonitorElement * > Charge_Vs_Index
double FitMPV
Definition: APVGainStruct.h:19
unsigned int APVId
Definition: APVGainStruct.h:10
unsigned int DetId
Definition: APVGainStruct.h:9
bool isMasked
Definition: APVGainStruct.h:32
double FitWidth
Definition: APVGainStruct.h:21
double Gain
Definition: APVGainStruct.h:25
double PreviousGain
Definition: APVGainStruct.h:27
bool IsGoodLandauFit(double *FitResults)
std::unordered_map< unsigned int, stAPVGain * > APVsColl
unsigned int Index
Definition: APVGainStruct.h:7
double FitNorm
Definition: APVGainStruct.h:24
const std::complex< double > I
Definition: I.h:8
double FitMPVErr
Definition: APVGainStruct.h:20
double FitChi2
Definition: APVGainStruct.h:23
int statCollectionFromMode(const char *tag) const
void getPeakOfLandau(TH1 *InputHisto, double *FitResults, double LowRange=50, double HighRange=5400)
double NEntries
Definition: APVGainStruct.h:29
unsigned int SubDet
Definition: APVGainStruct.h:11
double FitWidthErr
Definition: APVGainStruct.h:22
void SiStripGainFromCalibTree::algoEndJob ( )
overrideprivatevirtual

Reimplemented from ConditionDBWriter< SiStripApvGain >.

Definition at line 992 of file SiStripGainFromCalibTree.cc.

References algoAnalyzeTheTree(), algoComputeMPVandGain(), AlgoMode, Charge_Vs_Index, Charge_Vs_PathlengthTECM1, Charge_Vs_PathlengthTECM2, Charge_Vs_PathlengthTECP1, Charge_Vs_PathlengthTECP2, Charge_Vs_PathlengthTIB, Charge_Vs_PathlengthTIDM, Charge_Vs_PathlengthTIDP, Charge_Vs_PathlengthTOB, Harvest, m_calibrationMode, m_harvestingMode, TFileService::make(), NClusterStrip, NStripAPVs, Utilities::operator, or, qualityMonitor(), saveSummary, statCollectionFromMode(), ConditionDBWriter< SiStripApvGain >::storeOnDbNow(), storeOnTree(), and tfs.

992  {
993  if(AlgoMode == "PCL" && !m_harvestingMode) return;//nothing to do in that case
994 
995  if(AlgoMode == "CalibTree"){
996  edm::LogInfo("SiStripGainFromCalibTree") << "Analyzing calibration tree" << std::endl;
997  // Loop on calibTrees to fill the 2D histograms
999  }else if(m_harvestingMode){
1000  NClusterStrip = (Charge_Vs_Index[Harvest])->getTH2S()->Integral(0,NStripAPVs+1, 0, 99999 );
1001  //NClusterPixel = (Charge_Vs_Index[Harvest])->getTH2S()->Integral(NStripAPVs+2, NStripAPVs+NPixelDets+2, 0, 99999 );
1002  }
1003 
1004  // Now that we have the full statistics we can extract the information of the 2D histograms
1006 
1007  // Result monitoring
1008  qualityMonitor();
1009 
1010  // Force the DB object writing,
1011  // thus setting the IOV as the first processed run (if timeFromEndRun is set to false)
1012  storeOnDbNow();
1013 
1014  if(AlgoMode != "PCL" or saveSummary){
1015  edm::LogInfo("SiStripGainFromCalibTree") << "Saving summary into root file" << std::endl;
1016 
1017  //also save the 2D monitor elements to this file as TH2D tfs
1019 
1020  //save only the statistics for the calibrationTag
1021  int elepos = statCollectionFromMode(m_calibrationMode.c_str());
1022 
1023  if( Charge_Vs_Index[elepos]!=nullptr ) tfs->make<TH2S> ( *(Charge_Vs_Index[elepos])->getTH2S() );
1024  //if( Charge_Vs_Index_Absolute[elepos]!=0 ) tfs->make<TH2S> ( *(Charge_Vs_Index_Absolute[elepos])->getTH2S() );
1025  if( Charge_Vs_PathlengthTIB[elepos]!=nullptr ) tfs->make<TH2S> ( *(Charge_Vs_PathlengthTIB[elepos])->getTH2S() );
1026  if( Charge_Vs_PathlengthTOB[elepos]!=nullptr ) tfs->make<TH2S> ( *(Charge_Vs_PathlengthTOB[elepos])->getTH2S() );
1027  if( Charge_Vs_PathlengthTIDP[elepos]!=nullptr ) tfs->make<TH2S> ( *(Charge_Vs_PathlengthTIDP[elepos])->getTH2S() );
1028  if( Charge_Vs_PathlengthTIDM[elepos]!=nullptr ) tfs->make<TH2S> ( *(Charge_Vs_PathlengthTIDM[elepos])->getTH2S() );
1029  if( Charge_Vs_PathlengthTECP1[elepos]!=nullptr ) tfs->make<TH2S> ( *(Charge_Vs_PathlengthTECP1[elepos])->getTH2S() );
1030  if( Charge_Vs_PathlengthTECP2[elepos]!=nullptr ) tfs->make<TH2S> ( *(Charge_Vs_PathlengthTECP2[elepos])->getTH2S() );
1031  if( Charge_Vs_PathlengthTECM1[elepos]!=nullptr ) tfs->make<TH2S> ( *(Charge_Vs_PathlengthTECM1[elepos])->getTH2S() );
1032  if( Charge_Vs_PathlengthTECM2[elepos]!=nullptr ) tfs->make<TH2S> ( *(Charge_Vs_PathlengthTECM2[elepos])->getTH2S() );
1033 
1034  storeOnTree(tfs);
1035  }
1036 }
std::vector< MonitorElement * > Charge_Vs_Index
std::vector< MonitorElement * > Charge_Vs_PathlengthTOB
void storeOnTree(TFileService *tfs)
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
std::vector< MonitorElement * > Charge_Vs_PathlengthTECM1
std::vector< MonitorElement * > Charge_Vs_PathlengthTECM2
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
std::vector< MonitorElement * > Charge_Vs_PathlengthTECP1
std::vector< MonitorElement * > Charge_Vs_PathlengthTIDM
std::vector< MonitorElement * > Charge_Vs_PathlengthTECP2
int statCollectionFromMode(const char *tag) const
std::vector< MonitorElement * > Charge_Vs_PathlengthTIB
std::vector< MonitorElement * > Charge_Vs_PathlengthTIDP
void SiStripGainFromCalibTree::algoEndRun ( const edm::Run run,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Reimplemented from ConditionDBWriter< SiStripApvGain >.

Definition at line 840 of file SiStripGainFromCalibTree.cc.

References AlgoMode, Charge_1, Charge_2, Charge_3, Charge_4, Charge_Vs_Index, Charge_Vs_PathlengthTECM1, Charge_Vs_PathlengthTECM2, Charge_Vs_PathlengthTECP1, Charge_Vs_PathlengthTECP2, Charge_Vs_PathlengthTIB, Charge_Vs_PathlengthTIDM, Charge_Vs_PathlengthTIDP, Charge_Vs_PathlengthTOB, dbe, doChargeMonitorPerPlane, plotBeamSpotDB::first, Harvest, mps_fire::i, m_calibrationMode, m_DQMdir, m_harvestingMode, m_splitDQMstat, merge(), APVGain::monHnames(), nullptr, statCollectionFromMode(), AlCaHLTBitMon_QueryRunRegistry::string, GlobalPosition_Frontier_DevDB_cff::tag, and VChargeHisto.

840  {
841  if(AlgoMode == "PCL" && !m_harvestingMode) return;//nothing to do in that case
842 
843  if(AlgoMode == "PCL" and m_harvestingMode){
844  // Load the 2D histograms from the DQM objects
845  // When running in AlCaHarvesting mode the histos are already booked and should be just retrieved from
846  // DQMStore so that they can be used in the fit
847 
848  edm::LogInfo("SiStripGainFromCalibTree") << "Starting harvesting statistics" << std::endl;
849 
850  // check the required tag before adding histograms
851  int elepos = statCollectionFromMode(m_calibrationMode.c_str());
852  if (elepos!=Harvest) {
853 
854  //collect statistics from DQM into the related monitored elements
856  if(!stag.empty() && stag[0]!='_') stag.insert(0,1,'_');
857 
858 
859  if (elepos==-1) {
860  //implememt backward compatibility
861  elepos=0;
862  stag="";
863  }
864 
866 
867  std::string cvi = DQM_dir + std::string("/Charge_Vs_Index") + stag;
868  //std::string cviA = DQM_dir + std::string("/Charge_Vs_Index_Absolute") + stag;
869  std::string cvpTIB = DQM_dir + std::string("/Charge_Vs_PathlengthTIB") + stag;
870  std::string cvpTOB = DQM_dir + std::string("/Charge_Vs_PathlengthTOB") + stag;
871  std::string cvpTIDP = DQM_dir + std::string("/Charge_Vs_PathlengthTIDP") + stag;
872  std::string cvpTIDM = DQM_dir + std::string("/Charge_Vs_PathlengthTIDM") + stag;
873  std::string cvpTECP1 = DQM_dir + std::string("/Charge_Vs_PathlengthTECP1") + stag;
874  std::string cvpTECP2 = DQM_dir + std::string("/Charge_Vs_PathlengthTECP2") + stag;
875  std::string cvpTECM1 = DQM_dir + std::string("/Charge_Vs_PathlengthTECM1") + stag;
876  std::string cvpTECM2 = DQM_dir + std::string("/Charge_Vs_PathlengthTECM2") + stag;
877 
878  Charge_Vs_Index[elepos] = dbe->get(cvi);
879  //Charge_Vs_Index_Absolute[elepos] = dbe->get(cviA.c_str());
880  Charge_Vs_PathlengthTIB[elepos] = dbe->get(cvpTIB);
881  Charge_Vs_PathlengthTOB[elepos] = dbe->get(cvpTOB);
882  Charge_Vs_PathlengthTIDP[elepos] = dbe->get(cvpTIDP);
883  Charge_Vs_PathlengthTIDM[elepos] = dbe->get(cvpTIDM);
884  Charge_Vs_PathlengthTECP1[elepos] = dbe->get(cvpTECP1);
885  Charge_Vs_PathlengthTECP2[elepos] = dbe->get(cvpTECP2);
886  Charge_Vs_PathlengthTECM1[elepos] = dbe->get(cvpTECM1);
887  Charge_Vs_PathlengthTECM2[elepos] = dbe->get(cvpTECM2);
888 
889  if (Charge_Vs_Index[elepos]==nullptr) {
890  edm::LogError("SiStripGainFromCalibTree") << "Harvesting: could not retrieve " << cvi.c_str()
891  << ", statistics will not be summed!" << std::endl;
892  } else {
893  merge( (Charge_Vs_Index[Harvest])->getTH2S(), (Charge_Vs_Index[elepos])->getTH2S() );
894  edm::LogInfo("SiStripGainFromCalibTree") << "Harvesting "
895  << (Charge_Vs_Index[elepos])->getTH2S()->GetEntries() << " more clusters" << std::endl;
896  }
897 
898  //if (Charge_Vs_Index_Absolute[elepos]==0) {
899  // edm::LogError("SiStripGainFromCalibTree") << "Harvesting: could not retrieve " << cviA.c_str()
900  // << ", statistics will not be summed!" << std::endl;
901  //} else merge( (Charge_Vs_Index_Absolute[Harvest])->getTH2S(), (Charge_Vs_Index_Absolute[elepos])->getTH2S() );
902 
903  if (Charge_Vs_PathlengthTIB[elepos]==nullptr) {
904  edm::LogError("SiStripGainFromCalibTree") << "Harvesting: could not retrieve " << cvpTIB.c_str()
905  << ", statistics will not be summed!" << std::endl;
906  } else (Charge_Vs_PathlengthTIB[Harvest])->getTH2S()->Add((Charge_Vs_PathlengthTIB[elepos])->getTH2S());
907 
908  if (Charge_Vs_PathlengthTOB[elepos]==nullptr) {
909  edm::LogError("SiStripGainFromCalibTree") << "Harvesting: could not retrieve " << cvpTOB.c_str()
910  << ", statistics will not be summed!" << std::endl;
911  } else (Charge_Vs_PathlengthTOB[Harvest])->getTH2S()->Add((Charge_Vs_PathlengthTOB[elepos])->getTH2S());
912 
913  if (Charge_Vs_PathlengthTIDP[elepos]==nullptr) {
914  edm::LogError("SiStripGainFromCalibTree") << "Harvesting: could not retrieve " << cvpTIDP.c_str()
915  << ", statistics will not be summed!" << std::endl;
916  } else (Charge_Vs_PathlengthTIDP[Harvest])->getTH2S()->Add((Charge_Vs_PathlengthTIDP[elepos])->getTH2S());
917 
918  if (Charge_Vs_PathlengthTIDM[elepos]==nullptr) {
919  edm::LogError("SiStripGainFromCalibTree") << "Harvesting: could not retrieve " << cvpTIDM.c_str()
920  << ", statistics will not be summed!" << std::endl;
921  } else (Charge_Vs_PathlengthTIDM[Harvest])->getTH2S()->Add((Charge_Vs_PathlengthTIDM[elepos])->getTH2S());
922 
923  if (Charge_Vs_PathlengthTECP1[elepos]==nullptr) {
924  edm::LogError("SiStripGainFromCalibTree") << "Harvesting: could not retrieve " << cvpTECP1.c_str()
925  << ", statistics will not be summed!" << std::endl;
926  } else (Charge_Vs_PathlengthTECP1[Harvest])->getTH2S()->Add((Charge_Vs_PathlengthTECP1[elepos])->getTH2S());
927 
928  if (Charge_Vs_PathlengthTECP2[elepos]==nullptr) {
929  edm::LogError("SiStripGainFromCalibTree") << "Harvesting: could not retrieve " << cvpTECP2.c_str()
930  << ", statistics will not be summed!" << std::endl;
931  } else (Charge_Vs_PathlengthTECP2[Harvest])->getTH2S()->Add((Charge_Vs_PathlengthTECP2[elepos])->getTH2S());
932 
933  if (Charge_Vs_PathlengthTECM1[elepos]==nullptr) {
934  edm::LogError("SiStripGainFromCalibTree") << "Harvesting: could not retrieve " << cvpTECM1.c_str()
935  << ", statistics will not be summed!" << std::endl;
936  } else (Charge_Vs_PathlengthTECM1[Harvest])->getTH2S()->Add((Charge_Vs_PathlengthTECM1[elepos])->getTH2S());
937 
938  if (Charge_Vs_PathlengthTECM2[elepos]==nullptr) {
939  edm::LogError("SiStripGainFromCalibTree") << "Harvesting: could not retrieve " << cvpTECM2.c_str()
940  << ", statistics will not be summed!" << std::endl;
941  } else (Charge_Vs_PathlengthTECM2[Harvest])->getTH2S()->Add((Charge_Vs_PathlengthTECM2[elepos])->getTH2S());
942 
943 
944  // Gather Charge monitoring histograms
945  std::vector<std::pair<std::string,std::string>> tags = APVGain::monHnames(VChargeHisto,doChargeMonitorPerPlane,"");
946  for (unsigned int i=0;i<tags.size();i++){
947  std::string tag = DQM_dir + "/" + (tags[i]).first + stag;
948  Charge_1[elepos].push_back( APVGain::APVmon(0,0,0,dbe->get( tag) ) );
949  if ( (Charge_1[elepos][i]).monitor==nullptr ) {
950  edm::LogError("SiStripGainFromCalibTree") << "Harvesting: could not retrieve " << tag.c_str()
951  << ", statistics will not be summed!" << std::endl;
952  } else (Charge_1[Harvest][i]).monitor->getTH1D()->Add((Charge_1[elepos][i]).monitor->getTH1D());
953  }
954 
956  for (unsigned int i=0;i<tags.size();i++){
957  std::string tag = DQM_dir + "/" + (tags[i]).first + stag;
958  Charge_2[elepos].push_back( APVGain::APVmon(0,0,0,dbe->get( tag) ) );
959  if ( (Charge_2[elepos][i]).monitor==nullptr ) {
960  edm::LogError("SiStripGainFromCalibTree") << "Harvesting: could not retrieve " << tag.c_str()
961  << ", statistics will not be summed!" << std::endl;
962  } else (Charge_2[Harvest][i]).monitor->getTH1D()->Add((Charge_2[elepos][i]).monitor->getTH1D());
963 
964  }
965 
967  for (unsigned int i=0;i<tags.size();i++){
968  std::string tag = DQM_dir + "/" + (tags[i]).first + stag;
969  Charge_3[elepos].push_back( APVGain::APVmon(0,0,0,dbe->get( tag) ) );
970  if ( (Charge_3[elepos][i]).monitor==nullptr ) {
971  edm::LogError("SiStripGainFromCalibTree") << "Harvesting: could not retrieve " << tag.c_str()
972  << ", statistics will not be summed!" << std::endl;
973  } else (Charge_3[Harvest][i]).monitor->getTH1D()->Add((Charge_3[elepos][i]).monitor->getTH1D());
974 
975  }
976 
978  for (unsigned int i=0;i<tags.size();i++){
979  std::string tag = DQM_dir + "/" + (tags[i]).first + stag;
980  Charge_4[elepos].push_back( APVGain::APVmon(0,0,0,dbe->get( tag) ) );
981  if ( (Charge_4[elepos][i]).monitor==nullptr ) {
982  edm::LogError("SiStripGainFromCalibTree") << "Harvesting: could not retrieve " << tag.c_str()
983  << ", statistics will not be summed!" << std::endl;
984  } else (Charge_4[Harvest][i]).monitor->getTH1D()->Add((Charge_4[elepos][i]).monitor->getTH1D());
985  }
986 
987  }
988  }
989 }
std::vector< MonitorElement * > Charge_Vs_Index
std::vector< MonitorElement * > Charge_Vs_PathlengthTOB
std::vector< MonitorElement * > Charge_Vs_PathlengthTECM1
#define nullptr
std::vector< MonitorElement * > Charge_Vs_PathlengthTECM2
std::array< std::vector< APVGain::APVmon >, 7 > Charge_3
std::vector< MonitorElement * > Charge_Vs_PathlengthTECP1
std::vector< MonitorElement * > Charge_Vs_PathlengthTIDM
std::array< std::vector< APVGain::APVmon >, 7 > Charge_2
std::vector< MonitorElement * > Charge_Vs_PathlengthTECP2
int statCollectionFromMode(const char *tag) const
std::vector< MonitorElement * > Charge_Vs_PathlengthTIB
std::vector< std::string > VChargeHisto
std::vector< MonitorElement * > Charge_Vs_PathlengthTIDP
std::vector< std::pair< std::string, std::string > > monHnames(std::vector< std::string >, bool, const char *tag)
std::array< std::vector< APVGain::APVmon >, 7 > Charge_4
std::array< std::vector< APVGain::APVmon >, 7 > Charge_1
void SiStripGainFromCalibTree::bookDQMHistos ( const char *  dqm_dir,
const char *  tag 
)
private

Definition at line 458 of file SiStripGainFromCalibTree.cc.

References a, AlgoMode, b, booked_dir_, Charge_1, Charge_2, Charge_3, Charge_4, Charge_Vs_Index, Charge_Vs_PathlengthTECM1, Charge_Vs_PathlengthTECM2, Charge_Vs_PathlengthTECP1, Charge_Vs_PathlengthTECP2, Charge_Vs_PathlengthTIB, Charge_Vs_PathlengthTIDM, Charge_Vs_PathlengthTIDP, Charge_Vs_PathlengthTOB, dbe, DiffWRTPrevGainTEC, DiffWRTPrevGainTIB, DiffWRTPrevGainTID, DiffWRTPrevGainTOB, doChargeMonitorPerPlane, JetChargeProducer_cfi::exp, plotBeamSpotDB::first, Gains, GainVsPrevGainTEC, GainVsPrevGainTIB, GainVsPrevGainTID, GainVsPrevGainTOB, Harvest, mps_fire::i, cmsBatch::log, m_harvestingMode, APVGain::monHnames(), MPV_Vs_EtaTEC, MPV_Vs_EtaTECthick, MPV_Vs_EtaTECthin, MPV_Vs_EtaTIB, MPV_Vs_EtaTID, MPV_Vs_EtaTOB, MPV_Vs_PhiTEC, MPV_Vs_PhiTECthick, MPV_Vs_PhiTECthin, MPV_Vs_PhiTIB, MPV_Vs_PhiTID, MPV_Vs_PhiTOB, MPVError, MPVErrorVsEta, MPVErrorVsMPV, MPVErrorVsN, MPVErrorVsPhi, MPVs, MPVs320, MPVs500, MPVsTEC, MPVsTECM, MPVsTECM1, MPVsTECM2, MPVsTECP, MPVsTECP1, MPVsTECP2, MPVsTECthick, MPVsTECthin, MPVsTIB, MPVsTID, MPVsTIDM, MPVsTIDP, MPVsTOB, newCharge, NoMPVfit, NoMPVmasked, NStripAPVs, p1, p2, edm::second(), statCollectionFromMode(), AlCaHLTBitMon_QueryRunRegistry::string, APVGain::subdetectorId(), APVGain::subdetectorPlane(), APVGain::subdetectorSide(), VChargeHisto, and y.

Referenced by algoBeginJob().

459 {
460  edm::LogInfo("SiStripGainFromCalibTree") << "Setting " << dqm_dir << "in DQM and booking histograms for tag "
461  << tag << std::endl;
462 
463  if ( strcmp(booked_dir_.c_str(),dqm_dir)!=0 ) {
464  booked_dir_ = dqm_dir;
465  dbe->setCurrentFolder(dqm_dir);
466  }
467 
468  std::string stag(tag);
469  if(!stag.empty() && stag[0]!='_') stag.insert(0,1,'_');
470 
471  std::string cvi = std::string("Charge_Vs_Index") + stag;
472  //std::string cviA = std::string("Charge_Vs_Index_Absolute") + stag;
473  std::string cvpTIB = std::string("Charge_Vs_PathlengthTIB") + stag;
474  std::string cvpTOB = std::string("Charge_Vs_PathlengthTOB") + stag;
475  std::string cvpTIDP = std::string("Charge_Vs_PathlengthTIDP") + stag;
476  std::string cvpTIDM = std::string("Charge_Vs_PathlengthTIDM") + stag;
477  std::string cvpTECP1 = std::string("Charge_Vs_PathlengthTECP1") + stag;
478  std::string cvpTECP2 = std::string("Charge_Vs_PathlengthTECP2") + stag;
479  std::string cvpTECM1 = std::string("Charge_Vs_PathlengthTECM1") + stag;
480  std::string cvpTECM2 = std::string("Charge_Vs_PathlengthTECM2") + stag;
481 
482  int elepos = (m_harvestingMode && AlgoMode=="PCL")? Harvest : statCollectionFromMode(tag);
483 
484  // The cluster charge is stored by exploiting a non uniform binning in order
485  // reduce the histogram memory size. The bin width is relaxed with a falling
486  // exponential function and the bin boundaries are stored in the binYarray.
487  // The binXarray is used to provide as many bins as the APVs.
488  //
489  // More details about this implementations are here:
490  // https://indico.cern.ch/event/649344/contributions/2672267/attachments/1498323/2332518/OptimizeChHisto.pdf
491 
492  std::vector<float> binXarray;
493  binXarray.reserve( NStripAPVs+1 );
494  for(int a=0;a<=NStripAPVs;a++){
495  binXarray.push_back( (float)a );
496  }
497 
498  std::array<float,688> binYarray;
499  double p0 = 5.445;
500  double p1 = 0.002113;
501  double p2 = 69.01576;
502  double y = 0.;
503  for(int b=0;b<687;b++) {
504  binYarray[b] = y;
505  if(y<=902.) y = y + 2.;
506  else y = ( p0 - log(exp(p0-p1*y) - p2*p1)) / p1;
507  }
508  binYarray[687] = 4000.;
509 
510  Charge_Vs_Index[elepos] = dbe->book2S(cvi.c_str() , cvi.c_str() , NStripAPVs, &binXarray[0], 687, binYarray.data());
511  //Charge_Vs_Index_Absolute[elepos] = dbe->book2S(cviA.c_str() , cviA.c_str() , 88625, 0 , 88624,1000,0,4000);
512  Charge_Vs_PathlengthTIB[elepos] = dbe->book2S(cvpTIB.c_str() , cvpTIB.c_str() , 20 , 0.3 , 1.3 , 250,0,2000);
513  Charge_Vs_PathlengthTOB[elepos] = dbe->book2S(cvpTOB.c_str() , cvpTOB.c_str() , 20 , 0.3 , 1.3 , 250,0,2000);
514  Charge_Vs_PathlengthTIDP[elepos] = dbe->book2S(cvpTIDP.c_str() , cvpTIDP.c_str() , 20 , 0.3 , 1.3 , 250,0,2000);
515  Charge_Vs_PathlengthTIDM[elepos] = dbe->book2S(cvpTIDM.c_str() , cvpTIDM.c_str() , 20 , 0.3 , 1.3 , 250,0,2000);
516  Charge_Vs_PathlengthTECP1[elepos] = dbe->book2S(cvpTECP1.c_str(), cvpTECP1.c_str(), 20 , 0.3 , 1.3 , 250,0,2000);
517  Charge_Vs_PathlengthTECP2[elepos] = dbe->book2S(cvpTECP2.c_str(), cvpTECP2.c_str(), 20 , 0.3 , 1.3 , 250,0,2000);
518  Charge_Vs_PathlengthTECM1[elepos] = dbe->book2S(cvpTECM1.c_str(), cvpTECM1.c_str(), 20 , 0.3 , 1.3 , 250,0,2000);
519  Charge_Vs_PathlengthTECM2[elepos] = dbe->book2S(cvpTECM2.c_str(), cvpTECM2.c_str(), 20 , 0.3 , 1.3 , 250,0,2000);
520 
521  //Book Charge monitoring histograms
522  std::vector<std::pair<std::string,std::string>> hnames = APVGain::monHnames(VChargeHisto,doChargeMonitorPerPlane,"");
523  for (unsigned int i=0;i<hnames.size();i++){
524  std::string htag = (hnames[i]).first + stag;
525  MonitorElement* monitor = dbe->book1DD( htag.c_str(), (hnames[i]).second.c_str(), 100 , 0. , 1000. );
526  int id = APVGain::subdetectorId((hnames[i]).first);
527  int side = APVGain::subdetectorSide((hnames[i]).first);
528  int plane = APVGain::subdetectorPlane((hnames[i]).first);
529  Charge_1[elepos].push_back( APVGain::APVmon(id,side,plane,monitor) );
530  }
531 
533  for (unsigned int i=0;i<hnames.size();i++){
534  std::string htag = (hnames[i]).first + stag;
535  MonitorElement* monitor = dbe->book1DD( htag.c_str(), (hnames[i]).second.c_str(), 100 , 0. , 1000. );
536  int id = APVGain::subdetectorId((hnames[i]).first);
537  int side = APVGain::subdetectorSide((hnames[i]).first);
538  int plane = APVGain::subdetectorPlane((hnames[i]).first);
539  Charge_2[elepos].push_back( APVGain::APVmon(id,side,plane,monitor) );
540  }
541 
543  for (unsigned int i=0;i<hnames.size();i++){
544  std::string htag = (hnames[i]).first + stag;
545  MonitorElement* monitor = dbe->book1DD( htag.c_str(), (hnames[i]).second.c_str(), 100 , 0. , 1000. );
546  int id = APVGain::subdetectorId((hnames[i]).first);
547  int side = APVGain::subdetectorSide((hnames[i]).first);
548  int plane = APVGain::subdetectorPlane((hnames[i]).first);
549  Charge_3[elepos].push_back( APVGain::APVmon(id,side,plane,monitor) );
550  }
551 
553  for (unsigned int i=0;i<hnames.size();i++){
554  std::string htag = (hnames[i]).first + stag;
555  MonitorElement* monitor = dbe->book1DD( htag.c_str(), (hnames[i]).second.c_str(), 100 , 0. , 1000. );
556  int id = APVGain::subdetectorId((hnames[i]).first);
557  int side = APVGain::subdetectorSide((hnames[i]).first);
558  int plane = APVGain::subdetectorPlane((hnames[i]).first);
559  Charge_4[elepos].push_back( APVGain::APVmon(id,side,plane,monitor) );
560  }
561 
562  //Book validation histograms
563  if (m_harvestingMode) {
564  int MPVbin = 300;
565  float MPVmin = 0.;
566  float MPVmax = 600.;
567 
568  MPV_Vs_EtaTIB = dbe->book2DD("MPV_vs_EtaTIB" ,"MPV vs Eta TIB" , 50, -3.0, 3.0, MPVbin, MPVmin, MPVmax);
569  MPV_Vs_EtaTID = dbe->book2DD("MPV_vs_EtaTID" ,"MPV vs Eta TID" , 50, -3.0, 3.0, MPVbin, MPVmin, MPVmax);
570  MPV_Vs_EtaTOB = dbe->book2DD("MPV_vs_EtaTOB" ,"MPV vs Eta TOB" , 50, -3.0, 3.0, MPVbin, MPVmin, MPVmax);
571  MPV_Vs_EtaTEC = dbe->book2DD("MPV_vs_EtaTEC" ,"MPV vs Eta TEC" , 50, -3.0, 3.0, MPVbin, MPVmin, MPVmax);
572  MPV_Vs_EtaTECthin = dbe->book2DD("MPV_vs_EtaTEC1","MPV vs Eta TEC-thin" , 50, -3.0, 3.0, MPVbin, MPVmin, MPVmax);
573  MPV_Vs_EtaTECthick = dbe->book2DD("MPV_vs_EtaTEC2","MPV vs Eta TEC-thick", 50, -3.0, 3.0, MPVbin, MPVmin, MPVmax);
574 
575  MPV_Vs_PhiTIB = dbe->book2DD("MPV_vs_PhiTIB" ,"MPV vs Phi TIB" , 50, -3.4, 3.4, MPVbin, MPVmin, MPVmax);
576  MPV_Vs_PhiTID = dbe->book2DD("MPV_vs_PhiTID" ,"MPV vs Phi TID" , 50, -3.4, 3.4, MPVbin, MPVmin, MPVmax);
577  MPV_Vs_PhiTOB = dbe->book2DD("MPV_vs_PhiTOB" ,"MPV vs Phi TOB" , 50, -3.4, 3.4, MPVbin, MPVmin, MPVmax);
578  MPV_Vs_PhiTEC = dbe->book2DD("MPV_vs_PhiTEC" ,"MPV vs Phi TEC" , 50, -3.4, 3.4, MPVbin, MPVmin, MPVmax);
579  MPV_Vs_PhiTECthin = dbe->book2DD("MPV_vs_PhiTEC1","MPV vs Phi TEC-thin" , 50, -3.4, 3.4, MPVbin, MPVmin, MPVmax);
580  MPV_Vs_PhiTECthick = dbe->book2DD("MPV_vs_PhiTEC2","MPV vs Phi TEC-thick", 50, -3.4, 3.4, MPVbin, MPVmin, MPVmax);
581 
582  NoMPVfit = dbe->book2DD("NoMPVfit" ,"Modules with bad Landau Fit",350, -350, 350, 240, 0, 120);
583  NoMPVmasked = dbe->book2DD("NoMPVmasked" ,"Masked Modules" ,350, -350, 350, 240, 0, 120);
584 
585  Gains = dbe->book1DD("Gains" ,"Gains" , 300, 0, 2);
586  MPVs = dbe->book1DD("MPVs" ,"MPVs" , MPVbin, MPVmin, MPVmax);
587  MPVs320 = dbe->book1DD("MPV_320" ,"MPV 320 thickness" , MPVbin, MPVmin, MPVmax);
588  MPVs500 = dbe->book1DD("MPV_500" ,"MPV 500 thickness" , MPVbin, MPVmin, MPVmax);
589  MPVsTIB = dbe->book1DD("MPV_TIB" ,"MPV TIB" , MPVbin, MPVmin, MPVmax);
590  MPVsTID = dbe->book1DD("MPV_TID" ,"MPV TID" , MPVbin, MPVmin, MPVmax);
591  MPVsTIDP = dbe->book1DD("MPV_TIDP" ,"MPV TIDP" , MPVbin, MPVmin, MPVmax);
592  MPVsTIDM = dbe->book1DD("MPV_TIDM" ,"MPV TIDM" , MPVbin, MPVmin, MPVmax);
593  MPVsTOB = dbe->book1DD("MPV_TOB" ,"MPV TOB" , MPVbin, MPVmin, MPVmax);
594  MPVsTEC = dbe->book1DD("MPV_TEC" ,"MPV TEC" , MPVbin, MPVmin, MPVmax);
595  MPVsTECP = dbe->book1DD("MPV_TECP" ,"MPV TECP" , MPVbin, MPVmin, MPVmax);
596  MPVsTECM = dbe->book1DD("MPV_TECM" ,"MPV TECM" , MPVbin, MPVmin, MPVmax);
597  MPVsTECthin = dbe->book1DD("MPV_TEC1" ,"MPV TEC1" , MPVbin, MPVmin, MPVmax);
598  MPVsTECthick = dbe->book1DD("MPV_TEC2" ,"MPV TEC2" , MPVbin, MPVmin, MPVmax);
599  MPVsTECP1 = dbe->book1DD("MPV_TECP1" ,"MPV TECP1" , MPVbin, MPVmin, MPVmax);
600  MPVsTECP2 = dbe->book1DD("MPV_TECP2" ,"MPV TECP2" , MPVbin, MPVmin, MPVmax);
601  MPVsTECM1 = dbe->book1DD("MPV_TECM1" ,"MPV TECM1" , MPVbin, MPVmin, MPVmax);
602  MPVsTECM2 = dbe->book1DD("MPV_TECM2" ,"MPV TECM2" , MPVbin, MPVmin, MPVmax);
603 
604  MPVError = dbe->book1DD("MPVError" ,"MPV Error" , 150, 0, 150);
605  MPVErrorVsMPV = dbe->book2DD("MPVErrorVsMPV" ,"MPV Error vs MPV" ,300, 0, 600, 150, 0, 150);
606  MPVErrorVsEta = dbe->book2DD("MPVErrorVsEta" ,"MPV Error vs Eta" , 50, -3.0, 3.0, 150, 0, 150);
607  MPVErrorVsPhi = dbe->book2DD("MPVErrorVsPhi" ,"MPV Error vs Phi" , 50, -3.4, 3.4, 150, 0, 150);
608  MPVErrorVsN = dbe->book2DD("MPVErrorVsN" ,"MPV Error vs N" ,500, 0,1000, 150, 0, 150);
609 
610  DiffWRTPrevGainTIB = dbe->book1DD("DiffWRTPrevGainTIB" ,"Diff w.r.t. PrevGain TIB" , 250, 0,2);
611  DiffWRTPrevGainTID = dbe->book1DD("DiffWRTPrevGainTID" ,"Diff w.r.t. PrevGain TID" , 250, 0,2);
612  DiffWRTPrevGainTOB = dbe->book1DD("DiffWRTPrevGainTOB" ,"Diff w.r.t. PrevGain TOB" , 250, 0,2);
613  DiffWRTPrevGainTEC = dbe->book1DD("DiffWRTPrevGainTEC" ,"Diff w.r.t. PrevGain TEC" , 250, 0,2);
614 
615  GainVsPrevGainTIB = dbe->book2DD("GainVsPrevGainTIB" ,"Gain vs PrevGain TIB" , 100, 0,2, 100, 0,2);
616  GainVsPrevGainTID = dbe->book2DD("GainVsPrevGainTID" ,"Gain vs PrevGain TID" , 100, 0,2, 100, 0,2);
617  GainVsPrevGainTOB = dbe->book2DD("GainVsPrevGainTOB" ,"Gain vs PrevGain TOB" , 100, 0,2, 100, 0,2);
618  GainVsPrevGainTEC = dbe->book2DD("GainVsPrevGainTEC" ,"Gain vs PrevGain TEC" , 100, 0,2, 100, 0,2);
619 
620  std::vector<std::pair<std::string,std::string>> hnames=APVGain::monHnames(VChargeHisto,doChargeMonitorPerPlane,"newG2");
621  for (unsigned int i=0;i<hnames.size();i++){
622  MonitorElement* monitor = dbe->book1DD( (hnames[i]).first.c_str(), (hnames[i]).second.c_str(), 100 , 0. , 1000. );
623  int id = APVGain::subdetectorId((hnames[i]).first);
624  int side = APVGain::subdetectorSide((hnames[i]).first);
625  int plane = APVGain::subdetectorPlane((hnames[i]).first);
626  newCharge.push_back( APVGain::APVmon(id,side,plane,monitor) );
627  }
628 
629  }
630 }
std::vector< MonitorElement * > Charge_Vs_Index
std::vector< APVGain::APVmon > newCharge
int subdetectorPlane(uint32_t, const TrackerTopology *)
std::vector< MonitorElement * > Charge_Vs_PathlengthTOB
std::vector< MonitorElement * > Charge_Vs_PathlengthTECM1
std::vector< MonitorElement * > Charge_Vs_PathlengthTECM2
U second(std::pair< T, U > const &p)
std::array< std::vector< APVGain::APVmon >, 7 > Charge_3
std::vector< MonitorElement * > Charge_Vs_PathlengthTECP1
std::vector< MonitorElement * > Charge_Vs_PathlengthTIDM
std::array< std::vector< APVGain::APVmon >, 7 > Charge_2
double p2[4]
Definition: TauolaWrapper.h:90
std::vector< MonitorElement * > Charge_Vs_PathlengthTECP2
int statCollectionFromMode(const char *tag) const
std::vector< MonitorElement * > Charge_Vs_PathlengthTIB
int subdetectorSide(uint32_t, const TrackerTopology *)
double b
Definition: hdecay.h:120
double p1[4]
Definition: TauolaWrapper.h:89
double a
Definition: hdecay.h:121
std::vector< std::string > VChargeHisto
std::vector< MonitorElement * > Charge_Vs_PathlengthTIDP
std::vector< std::pair< std::string, std::string > > monHnames(std::vector< std::string >, bool, const char *tag)
std::array< std::vector< APVGain::APVmon >, 7 > Charge_4
int subdetectorId(uint32_t)
std::array< std::vector< APVGain::APVmon >, 7 > Charge_1
template<typename T >
edm::Handle<T> SiStripGainFromCalibTree::connect ( const T *&  ptr,
edm::EDGetTokenT< T token,
const edm::Event evt 
)
inlineprivate

Definition at line 128 of file SiStripGainFromCalibTree.cc.

References edm::Event::getByToken(), cmsBatch::handle, and edm::Handle< T >::product().

Referenced by Vispa.Gui.ZoomableScrollArea.ZoomableScrollArea::__init__(), Vispa.Views.PropertyView.BooleanProperty::__init__(), Vispa.Gui.FindDialog.FindDialog::_addScript(), Vispa.Gui.FindDialog.FindDialog::_addStringProperty(), Vispa.Main.Application.Application::_connectSignals(), Vispa.Plugins.ConfigEditor.CodeTableView.CodeTableView::_createItem(), Vispa.Gui.BoxContentDialog.BoxContentDialog::addButton(), Vispa.Gui.ToolBoxContainer.ToolBoxContainer::addWidget(), algoAnalyze(), Vispa.Views.PropertyView.PropertyView::append(), Vispa.Views.PropertyView.PropertyView::appendAddRow(), Vispa.Main.Application.Application::createAction(), Vispa.Views.PropertyView.TextEditWithButtonProperty::createButton(), Vispa.Views.LineDecayView.LineDecayView::createLineDecayContainer(), Vispa.Views.PropertyView.TextEditWithButtonProperty::createLineEdit(), Vispa.Views.LineDecayView.LineDecayContainer::createObject(), Vispa.Views.PropertyView.TextEditWithButtonProperty::createTextEdit(), Vispa.Plugins.Browser.BrowserTabController.BrowserTabController::filterDialog(), Vispa.Plugins.Browser.BrowserTabController.BrowserTabController::find(), Vispa.Gui.PortWidget.PortWidget::mouseMoveEvent(), Vispa.Views.PropertyView.BooleanProperty::setChecked(), Vispa.Main.SplitterTab.SplitterTab::setController(), Vispa.Plugins.Browser.BrowserTab.BrowserTab::setController(), Vispa.Views.PropertyView.BooleanProperty::setReadOnly(), Vispa.Views.PropertyView.DropDownProperty::setReadOnly(), Vispa.Views.PropertyView.TextEditWithButtonProperty::setReadOnly(), Vispa.Plugins.Browser.BrowserTabController.BrowserTabController::setTab(), Vispa.Views.PropertyView.IntegerProperty::setValue(), Vispa.Plugins.Browser.BrowserTabController.BrowserTabController::switchCenterView(), o2o_db_cfgmap.DbManagerDAQ::update_hashmap(), Vispa.Plugins.EdmBrowser.EdmBrowserTabController.EdmBrowserTabController::updateViewMenu(), and Vispa.Plugins.ConfigEditor.ConfigEditorTabController.ConfigEditorTabController::updateViewMenu().

128  {
130  evt.getByToken(token, handle);
131  ptr = handle.product();
132  return handle; //return handle to keep alive pointer (safety first)
133  }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:508
T const * product() const
Definition: Handle.h:81
SiStripApvGain * SiStripGainFromCalibTree::getNewObject ( )
overrideprivatevirtual

Implements ConditionDBWriter< SiStripApvGain >.

Definition at line 1609 of file SiStripGainFromCalibTree.cc.

References a, sistrip::APV, APVsCollOrdered, stAPVGain::DetId, stAPVGain::Gain, m_harvestingMode, NewMuonAssociatorByHits_cfi::obj, produceTagFilter(), SiStripApvGain::put(), ConditionDBWriter< SiStripApvGain >::setDoStore(), and stAPVGain::SubDet.

1610 {
1612  if(!m_harvestingMode) return obj;
1613 
1614  if(!produceTagFilter()){
1615  edm::LogWarning("SiStripGainFromCalibTree")<< "getNewObject -> will not produce a paylaod because produceTagFilter returned false " << endl;
1616  setDoStore(false);
1617  return obj;
1618  }
1619 
1620 
1621  std::vector<float>* theSiStripVector = nullptr;
1622  unsigned int PreviousDetId = 0;
1623  for(unsigned int a=0;a<APVsCollOrdered.size();a++){
1625  if(APV==nullptr){ printf("Bug\n"); continue; }
1626  if(APV->SubDet<=2)continue;
1627  if(APV->DetId != PreviousDetId){
1628  if(theSiStripVector!=nullptr){
1629  SiStripApvGain::Range range(theSiStripVector->begin(),theSiStripVector->end());
1630  if ( !obj->put(PreviousDetId,range) ) printf("Bug to put detId = %i\n",PreviousDetId);
1631  }
1632  theSiStripVector = new std::vector<float>;
1633  PreviousDetId = APV->DetId;
1634  }
1635  theSiStripVector->push_back(APV->Gain);
1636  }
1637  if(theSiStripVector!=nullptr){
1638  SiStripApvGain::Range range(theSiStripVector->begin(),theSiStripVector->end());
1639  if ( !obj->put(PreviousDetId,range) ) printf("Bug to put detId = %i\n",PreviousDetId);
1640  }
1641 
1642  if (theSiStripVector!=nullptr) delete theSiStripVector;
1643 
1644  return obj;
1645 }
unsigned int DetId
Definition: APVGainStruct.h:9
bool put(const uint32_t &detID, Range input)
std::vector< stAPVGain * > APVsCollOrdered
double Gain
Definition: APVGainStruct.h:25
std::pair< ContainerIterator, ContainerIterator > Range
void setDoStore(const bool doStore)
When set to false the payload will not be written to the db.
double a
Definition: hdecay.h:121
unsigned int SubDet
Definition: APVGainStruct.h:11
void SiStripGainFromCalibTree::getPeakOfLandau ( TH1 *  InputHisto,
double *  FitResults,
double  LowRange = 50,
double  HighRange = 5400 
)
private

Definition at line 1039 of file SiStripGainFromCalibTree.cc.

References MinNrEntries.

Referenced by algoComputeMPVandGain().

1040 {
1041  FitResults[0] = -0.5; //MPV
1042  FitResults[1] = 0; //MPV error
1043  FitResults[2] = -0.5; //Width
1044  FitResults[3] = 0; //Width error
1045  FitResults[4] = -0.5; //Fit Chi2/NDF
1046  FitResults[5] = 0; //Normalization
1047 
1048  if( InputHisto->GetEntries() < MinNrEntries)return;
1049 
1050  // perform fit with standard landau
1051  TF1* MyLandau = new TF1("MyLandau","landau",LowRange, HighRange);
1052  MyLandau->SetParameter(1,300);
1053  InputHisto->Fit(MyLandau,"0QR WW");
1054 
1055  // MPV is parameter 1 (0=constant, 1=MPV, 2=Sigma)
1056  FitResults[0] = MyLandau->GetParameter(1); //MPV
1057  FitResults[1] = MyLandau->GetParError(1); //MPV error
1058  FitResults[2] = MyLandau->GetParameter(2); //Width
1059  FitResults[3] = MyLandau->GetParError(2); //Width error
1060  FitResults[4] = MyLandau->GetChisquare() / MyLandau->GetNDF(); //Fit Chi2/NDF
1061  FitResults[5] = MyLandau->GetParameter(0);
1062 
1063  delete MyLandau;
1064 }
bool SiStripGainFromCalibTree::isBFieldConsistentWithMode ( const edm::EventSetup iSetup) const
private

Definition at line 773 of file SiStripGainFromCalibTree.cc.

References edm::EventSetup::get(), RunInfo::m_avg_current, m_calibrationMode, MagFieldCurrentTh, and edm::ESHandle< T >::product().

Referenced by algoBeginJob(), and algoBeginRun().

773  {
774  edm::ESHandle<RunInfo> runInfo;
775  iSetup.get<RunInfoRcd>().get(runInfo);
776 
777  double average_current = runInfo.product()->m_avg_current;
778  bool isOn = (average_current > MagFieldCurrentTh);
779  bool is0T = (m_calibrationMode.substr( m_calibrationMode.length()-2 )=="0T");
780 
781  return ( (isOn && !is0T) || (!isOn && is0T) );
782 }
const T & get() const
Definition: EventSetup.h:55
float m_avg_current
Definition: RunInfo.h:29
T const * product() const
Definition: ESHandle.h:86
bool SiStripGainFromCalibTree::IsGoodLandauFit ( double *  FitResults)
private

Definition at line 1066 of file SiStripGainFromCalibTree.cc.

Referenced by algoComputeMPVandGain().

1066  {
1067  if(FitResults[0] <= 0 )return false;
1068 // if(FitResults[1] > MaxMPVError )return false;
1069 // if(FitResults[4] > MaxChi2OverNDF)return false;
1070  return true;
1071 }
void SiStripGainFromCalibTree::MakeCalibrationMap ( )
private

Definition at line 1659 of file SiStripGainFromCalibTree.cc.

References sistrip::APV, APVsColl, stAPVGain::CalibGain, m_calibrationPath, and useCalibration.

Referenced by algoBeginJob().

1659  {
1660  if(!useCalibration)return;
1661 
1662  TChain* t1 = new TChain("SiStripCalib/APVGain");
1663  t1->Add(m_calibrationPath.c_str());
1664 
1665  unsigned int tree_DetId;
1666  unsigned char tree_APVId;
1667  double tree_Gain;
1668 
1669  t1->SetBranchAddress("DetId" ,&tree_DetId );
1670  t1->SetBranchAddress("APVId" ,&tree_APVId );
1671  t1->SetBranchAddress("Gain" ,&tree_Gain );
1672 
1673  for (unsigned int ientry = 0; ientry < t1->GetEntries(); ientry++) {
1674  t1->GetEntry(ientry);
1675  stAPVGain* APV = APVsColl[(tree_DetId<<4) | (unsigned int)tree_APVId];
1676  APV->CalibGain = tree_Gain;
1677  }
1678 
1679  delete t1;
1680 }
std::unordered_map< unsigned int, stAPVGain * > APVsColl
double CalibGain
Definition: APVGainStruct.h:26
void SiStripGainFromCalibTree::merge ( TH2 *  A,
TH2 *  B 
)
private

Definition at line 328 of file SiStripGainFromCalibTree.cc.

Referenced by algoEndRun().

328  {
329  if(A->GetNbinsX() == B->GetNbinsX()){
330  A->Add(B);
331  }else{
332  for(int x=0;x<=B->GetNbinsX()+1; x++){
333  for(int y=0;y<=B->GetNbinsY()+1; y++){
334  A->SetBinContent(x,y,A->GetBinContent(x,y)+B->GetBinContent(x,y));
335  }}
336  }
337 }
static const std::string B
void SiStripGainFromCalibTree::processEvent ( )
private

Definition at line 1073 of file SiStripGainFromCalibTree.cc.

References AllowSaturation, sistrip::APV, APVsColl, stAPVGain::CalibGain, Charge_1, Charge_2, Charge_3, Charge_4, Charge_Vs_Index, Charge_Vs_PathlengthTECM1, Charge_Vs_PathlengthTECM2, Charge_Vs_PathlengthTECP1, Charge_Vs_PathlengthTECP2, Charge_Vs_PathlengthTIB, Charge_Vs_PathlengthTIDM, Charge_Vs_PathlengthTIDP, Charge_Vs_PathlengthTOB, ERun, stAPVGain::Eta, eventnumber, funct::false, farfromedge, APVGain::FetchMonitor(), HcalObjRepresent::Fill(), FirstSetOfConstants, firststrip, mps_fire::i, stAPVGain::Index, createfilelist::int, funct::m, m_calibrationMode, MaxNrStrips, MaxTrackChiOverNdf, MaxTrackEta, MaxTrackingIteration, MaxTrackMomentum, MinTrackEta, MinTrackHits, MinTrackMomentum, NClusterPixel, NClusterStrip, NEvent, nstrips, NTrack, OldGainRemoving, overlapping, path, stAPVGain::PreviousGain, rawid, runnumber, alignCSCRings::s, saturation, SRun, statCollectionFromMode(), stAPVGain::SubDet, StripSubdetector::TEC, stAPVGain::Thickness, StripSubdetector::TIB, StripSubdetector::TID, StripSubdetector::TOB, trackalgo, trackchi2ndof, tracketa, trackhitsvalid, trackp, funct::true, tTopo_, useCalibration, and Validation.

Referenced by algoAnalyze(), and algoAnalyzeTheTree().

1073  {
1074 
1075  edm::LogInfo("SiStripGainFromCalibTree") << "Processing run " << runnumber
1076  << " and event " << eventnumber
1077  << " for " << m_calibrationMode << " calibration." << std::endl;
1078 
1081 
1082  NEvent++;
1083  NTrack+=(*trackp).size();
1084 
1085  int elepos = statCollectionFromMode(m_calibrationMode.c_str());
1086 
1087  unsigned int FirstAmplitude=0;
1088  for(unsigned int i=0;i<(*chargeoverpath).size();i++){
1089  FirstAmplitude+=(*nstrips)[i];
1090  int TI = (*trackindex)[i];
1091 
1092  //printf("%i - %i - %i %i %i\n", (int)(*rawid)[i], (int)(*firststrip)[i]/128, (int)(*farfromedge)[i], (int)(*overlapping)[i], (int)(*saturation )[i] );
1093  if((*tracketa )[TI] < MinTrackEta )continue;
1094  if((*tracketa )[TI] > MaxTrackEta )continue;
1095  if((*trackp )[TI] < MinTrackMomentum )continue;
1096  if((*trackp )[TI] > MaxTrackMomentum )continue;
1097  if((*trackhitsvalid)[TI] < MinTrackHits )continue;
1098  if((*trackchi2ndof )[TI] > MaxTrackChiOverNdf )continue;
1099  if((*trackalgo )[TI] > MaxTrackingIteration )continue;
1100 
1101  stAPVGain* APV = APVsColl[((*rawid)[i]<<4) | ((*firststrip)[i]/128)]; //works for both strip and pixel thanks to firstStrip encoding for pixel in the calibTree
1102 
1103  if(APV->SubDet>2 && (*farfromedge)[i] == false )continue;
1104  if(APV->SubDet>2 && (*overlapping)[i] == true )continue;
1105  if(APV->SubDet>2 && (*saturation )[i] && !AllowSaturation)continue;
1106  if(APV->SubDet>2 && (*nstrips )[i] > MaxNrStrips )continue;
1107 
1108 
1109  //printf("detId=%7i run=%7i event=%9i charge=%5i cs=%3i\n",(*rawid)[i],runnumber,eventnumber,(*charge)[i],(*nstrips)[i]);
1110 
1111  //double trans = atan2((*localdiry)[i],(*localdirx)[i])*(180/3.14159265);
1112  //double alpha = acos ((*localdirx)[i] / sqrt( pow((*localdirx)[i],2) + pow((*localdirz)[i],2) ) ) * (180/3.14159265);
1113  //double beta = acos ((*localdiry)[i] / sqrt( pow((*localdirx)[i],2) + pow((*localdirz)[i],2) ) ) * (180/3.14159265);
1114 
1115  //printf("NStrip = %i : Charge = %i --> Path = %f --> ChargeOverPath=%f\n",(*nstrips)[i],(*charge)[i],(*path)[i],(*chargeoverpath)[i]);
1116  //printf("Amplitudes: ");
1117  //for(unsigned int a=0;a<(*nstrips)[i];a++){printf("%i ",(*amplitude)[FirstAmplitude+a]);}
1118  //printf("\n");
1119 
1120  if(APV->SubDet>2){NClusterStrip++;}else{NClusterPixel++;}
1121 
1122  int Charge = 0;
1123  if(APV->SubDet>2 && (useCalibration || !FirstSetOfConstants)){
1124  bool Saturation = false;
1125  for(unsigned int s=0;s<(*nstrips)[i];s++){
1126  int StripCharge = (*amplitude)[FirstAmplitude-(*nstrips)[i]+s];
1127  if(useCalibration && !FirstSetOfConstants){ StripCharge=(int)(StripCharge*(APV->PreviousGain/APV->CalibGain));
1128  }else if(useCalibration){ StripCharge=(int)(StripCharge/APV->CalibGain);
1129  }else if(!FirstSetOfConstants){ StripCharge=(int)(StripCharge*APV->PreviousGain);}
1130  if(StripCharge>1024){
1131  StripCharge = 255;
1132  Saturation = true;
1133  }else if(StripCharge>254){
1134  StripCharge = 254;
1135  Saturation = true;
1136  }
1137  Charge += StripCharge;
1138  }
1139  if(Saturation && !AllowSaturation)continue;
1140  }else if(APV->SubDet>2){
1141  Charge = (*charge)[i];
1142  }else{
1143  Charge = (*charge)[i]/265.0; //expected scale factor between pixel and strip charge
1144  }
1145 
1146  //printf("ChargeDifference = %i Vs %i with Gain = %f\n",(*charge)[i],Charge,APV->CalibGain);
1147 
1148  double ClusterChargeOverPath = ( (double) Charge )/(*path)[i] ;
1149  if(APV->SubDet>2){
1150  if(Validation) {ClusterChargeOverPath/=(*gainused)[i];}
1151  if(OldGainRemoving){ClusterChargeOverPath*=(*gainused)[i];}
1152  }
1153 
1154  // keep pixel cluster charge processing until here
1155  if(APV->SubDet<=2) continue;
1156 
1157  (Charge_Vs_Index[elepos]) ->Fill(APV->Index,ClusterChargeOverPath);
1158 
1159 
1160  // Compute the charge for monitoring and fill the relative histograms
1161  int mCharge1 = 0;
1162  int mCharge2 = 0;
1163  int mCharge3 = 0;
1164  int mCharge4 = 0;
1165  if(APV->SubDet>2) {
1166  for(unsigned int s=0;s<(*nstrips)[i];s++){
1167  int StripCharge = (*amplitude)[FirstAmplitude-(*nstrips)[i]+s];
1168  if(StripCharge>1024) StripCharge = 255;
1169  else if(StripCharge>254) StripCharge = 254;
1170  mCharge1 += StripCharge;
1171  mCharge2 += StripCharge;
1172  mCharge3 += StripCharge;
1173  mCharge4 += StripCharge;
1174  }
1175  // Revome gains for monitoring
1176  mCharge2 *= (*gainused)[i]; // remove G2
1177  mCharge3 *= (*gainusedTick)[i]; // remove G1
1178  mCharge4 *= ( (*gainused)[i] * (*gainusedTick)[i]); // remove G1 and G2
1179  }
1180  std::vector<APVGain::APVmon>& v1 = Charge_1[elepos];
1181  std::vector<MonitorElement*> cmon1 = APVGain::FetchMonitor(v1, (*rawid)[i], tTopo_);
1182  for(unsigned int m=0; m<cmon1.size(); m++) cmon1[m]->Fill(( (double) mCharge1 )/(*path)[i]);
1183 
1184  std::vector<APVGain::APVmon>& v2 = Charge_2[elepos];
1185  std::vector<MonitorElement*> cmon2 = APVGain::FetchMonitor(v2, (*rawid)[i], tTopo_);
1186  for(unsigned int m=0; m<cmon2.size(); m++) cmon2[m]->Fill(( (double) mCharge2 )/(*path)[i]);
1187 
1188  std::vector<APVGain::APVmon>& v3 = Charge_3[elepos];
1189  std::vector<MonitorElement*> cmon3 = APVGain::FetchMonitor(v3, (*rawid)[i], tTopo_);
1190  for(unsigned int m=0; m<cmon3.size(); m++) cmon3[m]->Fill(( (double) mCharge3 )/(*path)[i]);
1191 
1192  std::vector<APVGain::APVmon>& v4 = Charge_4[elepos];
1193  std::vector<MonitorElement*> cmon4 = APVGain::FetchMonitor(v4, (*rawid)[i], tTopo_);
1194  for(unsigned int m=0; m<cmon4.size(); m++) cmon4[m]->Fill(( (double) mCharge4 )/(*path)[i]);
1195 
1196 
1197 
1198  // Fill Charge Vs pathLenght histograms
1199  if(APV->SubDet==StripSubdetector::TIB){
1200  (Charge_Vs_PathlengthTIB[elepos])->Fill((*path)[i],Charge); // TIB
1201 
1202  }else if(APV->SubDet==StripSubdetector::TOB){
1203  (Charge_Vs_PathlengthTOB[elepos])->Fill((*path)[i],Charge); // TOB
1204 
1205  }else if(APV->SubDet==StripSubdetector::TID){
1206  if(APV->Eta<0) { (Charge_Vs_PathlengthTIDM[elepos])->Fill((*path)[i],Charge); } // TID minus
1207  else if(APV->Eta>0){ (Charge_Vs_PathlengthTIDP[elepos])->Fill((*path)[i],Charge); } // TID plus
1208 
1209  }else if(APV->SubDet==StripSubdetector::TEC){
1210  if(APV->Eta<0){
1211  if(APV->Thickness<0.04) { (Charge_Vs_PathlengthTECM1[elepos])->Fill((*path)[i],Charge); } // TEC minus, type 1
1212  else if(APV->Thickness>0.04){ (Charge_Vs_PathlengthTECM2[elepos])->Fill((*path)[i],Charge); } // TEC minus, type 2
1213  } else if(APV->Eta>0){
1214  if(APV->Thickness<0.04) { (Charge_Vs_PathlengthTECP1[elepos])->Fill((*path)[i],Charge); } // TEC plus, type 1
1215  else if(APV->Thickness>0.04){ (Charge_Vs_PathlengthTECP2[elepos])->Fill((*path)[i],Charge); } // TEC plus, type 2
1216  }
1217  }
1218 
1219  }// END OF ON-CLUSTER LOOP
1220 }//END OF processEvent()
std::vector< MonitorElement * > Charge_Vs_Index
const std::vector< float > * trackp
std::vector< MonitorElement * > FetchMonitor(std::vector< APVmon >, uint32_t, const TrackerTopology *topo=nullptr)
const std::vector< double > * trackchi2ndof
float Thickness
Definition: APVGainStruct.h:18
const std::vector< unsigned int > * rawid
const TrackerTopology * tTopo_
const std::vector< int > * trackalgo
std::vector< MonitorElement * > Charge_Vs_PathlengthTOB
std::vector< MonitorElement * > Charge_Vs_PathlengthTECM1
const std::vector< unsigned int > * trackhitsvalid
std::vector< MonitorElement * > Charge_Vs_PathlengthTECM2
double PreviousGain
Definition: APVGainStruct.h:27
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
std::unordered_map< unsigned int, stAPVGain * > APVsColl
unsigned int Index
Definition: APVGainStruct.h:7
double CalibGain
Definition: APVGainStruct.h:26
std::array< std::vector< APVGain::APVmon >, 7 > Charge_3
std::vector< MonitorElement * > Charge_Vs_PathlengthTECP1
const std::vector< unsigned short > * firststrip
std::vector< MonitorElement * > Charge_Vs_PathlengthTIDM
std::array< std::vector< APVGain::APVmon >, 7 > Charge_2
std::vector< MonitorElement * > Charge_Vs_PathlengthTECP2
int statCollectionFromMode(const char *tag) const
std::vector< MonitorElement * > Charge_Vs_PathlengthTIB
const std::vector< bool > * overlapping
const std::vector< bool > * saturation
const std::vector< bool > * farfromedge
std::vector< MonitorElement * > Charge_Vs_PathlengthTIDP
const std::vector< double > * path
std::array< std::vector< APVGain::APVmon >, 7 > Charge_4
unsigned int SubDet
Definition: APVGainStruct.h:11
const std::vector< unsigned short > * nstrips
const std::vector< double > * tracketa
std::array< std::vector< APVGain::APVmon >, 7 > Charge_1
bool SiStripGainFromCalibTree::produceTagFilter ( )
private

Definition at line 1579 of file SiStripGainFromCalibTree.cc.

References AlgoMode, BAD, Charge_Vs_Index, GOOD, Harvest, funct::integral(), m_calibrationMode, NStripAPVs, statCollectionFromMode(), tagCondition_GoodFrac, and tagCondition_NClusters.

Referenced by getNewObject().

1579  {
1580 
1581  // The goal of this function is to check wether or not there is enough statistics
1582  // to produce a meaningful tag for the DB
1583  int elepos = (AlgoMode == "PCL")? Harvest : statCollectionFromMode(m_calibrationMode.c_str());
1584  if( Charge_Vs_Index[elepos]==nullptr ) {
1585  edm::LogError("SiStripGainFromCalibTree") << "produceTagFilter -> Return false: could not retrieve the "
1586  << m_calibrationMode.c_str() << " statistics.\n"
1587  << "Please check if input contains "
1588  << m_calibrationMode.c_str() << " data." << std::endl;
1589  return false;
1590  }
1591 
1592 
1593  float integral = (Charge_Vs_Index[elepos])->getTH2S()->Integral();
1594  if( (Charge_Vs_Index[elepos])->getTH2S()->Integral(0,NStripAPVs+1, 0, 99999 ) < tagCondition_NClusters) {
1595  edm::LogWarning("SiStripGainFromCalibTree")
1596  << "calibrationMode -> " << m_calibrationMode << "\n"
1597  << "produceTagFilter -> Return false: Statistics is too low : " << integral << endl;
1598  return false;
1599  }
1600  if((1.0 * GOOD) / (GOOD+BAD) < tagCondition_GoodFrac) {
1601  edm::LogWarning("SiStripGainFromCalibTree")
1602  << "calibrationMode -> " << m_calibrationMode << "\n"
1603  << "produceTagFilter -> Return false: ratio of GOOD/TOTAL is too low: " << (1.0 * GOOD) / (GOOD+BAD) << endl;
1604  return false;
1605  }
1606  return true;
1607 }
std::vector< MonitorElement * > Charge_Vs_Index
Integral< F, X >::type integral(const F &f)
Definition: Integral.h:69
int statCollectionFromMode(const char *tag) const
void SiStripGainFromCalibTree::qualityMonitor ( )
private

Definition at line 1353 of file SiStripGainFromCalibTree.cc.

References a, AlgoMode, sistrip::APV, APVsCollOrdered, stringResolutionProvider_cfi::bin, Charge_Vs_Index, stAPVGain::DetId, DiffWRTPrevGainTEC, DiffWRTPrevGainTIB, DiffWRTPrevGainTID, DiffWRTPrevGainTOB, MillePedeFileConverter_cfg::e, stAPVGain::Eta, reco::tau::disc::Eta(), APVGain::FetchMonitor(), MonitorElement::Fill(), stAPVGain::FitMPV, stAPVGain::FitMPVErr, stAPVGain::Gain, g4SimHits_cfi::Gain, Gains, GainVsPrevGainTEC, GainVsPrevGainTIB, GainVsPrevGainTID, GainVsPrevGainTOB, h, Harvest, stAPVGain::Index, stAPVGain::isMasked, m_calibrationMode, MPV_Vs_EtaTEC, MPV_Vs_EtaTECthick, MPV_Vs_EtaTECthin, MPV_Vs_EtaTIB, MPV_Vs_EtaTID, MPV_Vs_EtaTOB, MPV_Vs_PhiTEC, MPV_Vs_PhiTECthick, MPV_Vs_PhiTECthin, MPV_Vs_PhiTIB, MPV_Vs_PhiTID, MPV_Vs_PhiTOB, MPVError, MPVErrorVsEta, MPVErrorVsMPV, MPVErrorVsN, MPVErrorVsPhi, MPVs, MPVs320, MPVs500, MPVsTEC, MPVsTECM, MPVsTECM1, MPVsTECM2, MPVsTECP, MPVsTECP1, MPVsTECP2, MPVsTECthick, MPVsTECthin, MPVsTIB, MPVsTID, MPVsTIDM, MPVsTIDP, MPVsTOB, stAPVGain::NEntries, newCharge, NoMPVfit, NoMPVmasked, stAPVGain::Phi, colinearityKinematic::Phi, stAPVGain::PreviousGain, stAPVGain::R, dttmaxenums::R, statCollectionFromMode(), stAPVGain::SubDet, ntupleEnum::SubDet, stAPVGain::Thickness, tTopo_, z, and stAPVGain::z.

Referenced by algoEndJob().

1353  {
1354 
1355  int elepos = (AlgoMode == "PCL")? Harvest : statCollectionFromMode(m_calibrationMode.c_str());
1356 
1357  for(unsigned int a=0;a<APVsCollOrdered.size();a++) {
1359  if(APV==nullptr)continue;
1360 
1361  unsigned int Index = APV->Index;
1362  unsigned int SubDet = APV->SubDet;
1363  unsigned int DetId = APV->DetId;
1364  float z = APV->z;
1365  float Eta = APV->Eta;
1366  float R = APV->R;
1367  float Phi = APV->Phi;
1368  float Thickness = APV->Thickness;
1369  double FitMPV = APV->FitMPV;
1370  double FitMPVErr = APV->FitMPVErr;
1371  double Gain = APV->Gain;
1372  double NEntries = APV->NEntries;
1373  double PreviousGain = APV->PreviousGain;
1374 
1375  if (SubDet<3) continue; // avoid to loop over Pixel det id
1376 
1377  if (Gain!=1.) {
1378  std::vector<MonitorElement*> charge_histos = APVGain::FetchMonitor(newCharge, DetId, tTopo_);
1379  TH2S *chvsidx = (Charge_Vs_Index[elepos])->getTH2S();
1380  int bin = chvsidx->GetXaxis()->FindBin(Index);
1381  TH1D* Proj = chvsidx->ProjectionY("proj",bin,bin);
1382  for (int binId=0; binId<Proj->GetXaxis()->GetNbins();binId++) {
1383  double new_charge = Proj->GetXaxis()->GetBinCenter(binId) / Gain;
1384  if (Proj->GetBinContent(binId)!=0.) {
1385  for (unsigned int h=0;h<charge_histos.size();h++) {
1386  TH1D* chisto = (charge_histos[h])->getTH1D();
1387  for (int e=0;e<Proj->GetBinContent(binId);e++) chisto->Fill(new_charge);
1388  }
1389  }
1390  }
1391  }
1392 
1393 
1394  if (FitMPV<=0.) { // No fit of MPV
1395  if (APV->isMasked) NoMPVmasked->Fill(z,R);
1396  else NoMPVfit->Fill(z,R);
1397 
1398  } else { // Fit of MPV
1399  if(FitMPV>0.) Gains->Fill(Gain);
1400 
1401  MPVs->Fill(FitMPV);
1402  if(Thickness<0.04) MPVs320->Fill(FitMPV);
1403  if(Thickness>0.04) MPVs500->Fill(FitMPV);
1404 
1405  MPVError->Fill(FitMPVErr);
1406  MPVErrorVsMPV->Fill(FitMPV,FitMPVErr);
1407  MPVErrorVsEta->Fill(Eta,FitMPVErr);
1408  MPVErrorVsPhi->Fill(Phi,FitMPVErr);
1409  MPVErrorVsN->Fill(NEntries,FitMPVErr);
1410 
1411  if(SubDet==3) {
1412  MPV_Vs_EtaTIB->Fill(Eta,FitMPV);
1413  MPV_Vs_PhiTIB->Fill(Phi,FitMPV);
1414  MPVsTIB->Fill(FitMPV);
1415 
1416  } else if(SubDet==4) {
1417  MPV_Vs_EtaTID->Fill(Eta,FitMPV);
1418  MPV_Vs_PhiTID->Fill(Phi,FitMPV);
1419  MPVsTID->Fill(FitMPV);
1420  if(Eta<0.) MPVsTIDM->Fill(FitMPV);
1421  if(Eta>0.) MPVsTIDP->Fill(FitMPV);
1422 
1423  } else if (SubDet==5) {
1424  MPV_Vs_EtaTOB->Fill(Eta,FitMPV);
1425  MPV_Vs_PhiTOB->Fill(Phi,FitMPV);
1426  MPVsTOB->Fill(FitMPV);
1427 
1428  } else if (SubDet==6) {
1429  MPV_Vs_EtaTEC->Fill(Eta,FitMPV);
1430  MPV_Vs_PhiTEC->Fill(Phi,FitMPV);
1431  MPVsTEC->Fill(FitMPV);
1432  if(Eta<0.) MPVsTECM->Fill(FitMPV);
1433  if(Eta>0.) MPVsTECP->Fill(FitMPV);
1434  if(Thickness<0.04) {
1435  MPV_Vs_EtaTECthin->Fill(Eta,FitMPV);
1436  MPV_Vs_PhiTECthin->Fill(Phi,FitMPV);
1437  MPVsTECthin->Fill(FitMPV);
1438  if(Eta>0.) MPVsTECP1->Fill(FitMPV);
1439  if(Eta<0.) MPVsTECM1->Fill(FitMPV);
1440  }
1441  if(Thickness>0.04) {
1442  MPV_Vs_EtaTECthick->Fill(Eta,FitMPV);
1443  MPV_Vs_PhiTECthick->Fill(Phi,FitMPV);
1444  MPVsTECthick->Fill(FitMPV);
1445  if(Eta>0.) MPVsTECP2->Fill(FitMPV);
1446  if(Eta<0.) MPVsTECM2->Fill(FitMPV);
1447  }
1448  }
1449  }
1450 
1451  if(SubDet==3 && PreviousGain!=0. ) DiffWRTPrevGainTIB->Fill(Gain/PreviousGain);
1452  else if(SubDet==4 && PreviousGain!=0. ) DiffWRTPrevGainTID->Fill(Gain/PreviousGain);
1453  else if(SubDet==5 && PreviousGain!=0. ) DiffWRTPrevGainTOB->Fill(Gain/PreviousGain);
1454  else if(SubDet==6 && PreviousGain!=0. ) DiffWRTPrevGainTEC->Fill(Gain/PreviousGain);
1455 
1456  if(SubDet==3 ) GainVsPrevGainTIB->Fill(PreviousGain,Gain);
1457  else if(SubDet==4 ) GainVsPrevGainTID->Fill(PreviousGain,Gain);
1458  else if(SubDet==5 ) GainVsPrevGainTOB->Fill(PreviousGain,Gain);
1459  else if(SubDet==6 ) GainVsPrevGainTEC->Fill(PreviousGain,Gain);
1460  }
1461 }
std::vector< MonitorElement * > Charge_Vs_Index
std::vector< MonitorElement * > FetchMonitor(std::vector< APVmon >, uint32_t, const TrackerTopology *topo=nullptr)
std::vector< APVGain::APVmon > newCharge
double FitMPV
Definition: APVGainStruct.h:19
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
float Thickness
Definition: APVGainStruct.h:18
const TrackerTopology * tTopo_
unsigned int DetId
Definition: APVGainStruct.h:9
bool isMasked
Definition: APVGainStruct.h:32
void Fill(long long x)
std::vector< stAPVGain * > APVsCollOrdered
double Gain
Definition: APVGainStruct.h:25
double PreviousGain
Definition: APVGainStruct.h:27
unsigned int Index
Definition: APVGainStruct.h:7
double FitMPVErr
Definition: APVGainStruct.h:20
bin
set the eta bin as selection string.
Definition: DetId.h:18
int statCollectionFromMode(const char *tag) const
double NEntries
Definition: APVGainStruct.h:29
double a
Definition: hdecay.h:121
unsigned int SubDet
Definition: APVGainStruct.h:11
int SiStripGainFromCalibTree::statCollectionFromMode ( const char *  tag) const
inlineprivate

Definition at line 315 of file SiStripGainFromCalibTree.cc.

References None, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by algoBeginJob(), algoComputeMPVandGain(), algoEndJob(), algoEndRun(), bookDQMHistos(), processEvent(), produceTagFilter(), qualityMonitor(), and storeOnTree().

316 {
317  std::vector<string>::const_iterator it=dqm_tag_.begin();
318  while(it!=dqm_tag_.end()) {
319  if(*it==std::string(tag)) return it-dqm_tag_.begin();
320  it++;
321  }
322 
323  if (std::string(tag)=="") return 0; // return StdBunch calibration mode for backward compatibility
324 
325  return None;
326 }
void SiStripGainFromCalibTree::storeOnTree ( TFileService tfs)
private

Definition at line 1463 of file SiStripGainFromCalibTree.cc.

References a, sistrip::APV, stAPVGain::APVId, APVsCollOrdered, BAD, Charge_Vs_Index, stAPVGain::DetId, stAPVGain::Eta, stAPVGain::FitChi2, stAPVGain::FitMPV, stAPVGain::FitMPVErr, stAPVGain::FitNorm, stAPVGain::FitWidth, stAPVGain::FitWidthErr, stAPVGain::Gain, Gains, GOOD, stAPVGain::Index, stAPVGain::isMasked, m_calibrationMode, TFileService::make(), MASKED, NClusterStrip, stAPVGain::NEntries, NEvent, NStripAPVs, NTrack, OutputGains, stAPVGain::Phi, stAPVGain::PreviousGain, stAPVGain::PreviousGainTick, stAPVGain::R, statCollectionFromMode(), mps_setup::stdout, stAPVGain::SubDet, stAPVGain::Thickness, stAPVGain::x, stAPVGain::y, and stAPVGain::z.

Referenced by algoEndJob().

1464 {
1465  unsigned int tree_Index;
1466  unsigned int tree_Bin;
1467  unsigned int tree_DetId;
1468  unsigned char tree_APVId;
1469  unsigned char tree_SubDet;
1470  float tree_x;
1471  float tree_y;
1472  float tree_z;
1473  float tree_Eta;
1474  float tree_R;
1475  float tree_Phi;
1476  float tree_Thickness;
1477  float tree_FitMPV;
1478  float tree_FitMPVErr;
1479  float tree_FitWidth;
1480  float tree_FitWidthErr;
1481  float tree_FitChi2NDF;
1482  float tree_FitNorm;
1483  double tree_Gain;
1484  double tree_PrevGain;
1485  double tree_PrevGainTick;
1486  double tree_NEntries;
1487  bool tree_isMasked;
1488 
1489  TTree* MyTree;
1490  MyTree = tfs->make<TTree> ("APVGain","APVGain");
1491  MyTree->Branch("Index" ,&tree_Index ,"Index/i");
1492  MyTree->Branch("Bin" ,&tree_Bin ,"Bin/i");
1493  MyTree->Branch("DetId" ,&tree_DetId ,"DetId/i");
1494  MyTree->Branch("APVId" ,&tree_APVId ,"APVId/b");
1495  MyTree->Branch("SubDet" ,&tree_SubDet ,"SubDet/b");
1496  MyTree->Branch("x" ,&tree_x ,"x/F");
1497  MyTree->Branch("y" ,&tree_y ,"y/F");
1498  MyTree->Branch("z" ,&tree_z ,"z/F");
1499  MyTree->Branch("Eta" ,&tree_Eta ,"Eta/F");
1500  MyTree->Branch("R" ,&tree_R ,"R/F");
1501  MyTree->Branch("Phi" ,&tree_Phi ,"Phi/F");
1502  MyTree->Branch("Thickness" ,&tree_Thickness ,"Thickness/F");
1503  MyTree->Branch("FitMPV" ,&tree_FitMPV ,"FitMPV/F");
1504  MyTree->Branch("FitMPVErr" ,&tree_FitMPVErr ,"FitMPVErr/F");
1505  MyTree->Branch("FitWidth" ,&tree_FitWidth ,"FitWidth/F");
1506  MyTree->Branch("FitWidthErr" ,&tree_FitWidthErr,"FitWidthErr/F");
1507  MyTree->Branch("FitChi2NDF" ,&tree_FitChi2NDF ,"FitChi2NDF/F");
1508  MyTree->Branch("FitNorm" ,&tree_FitNorm ,"FitNorm/F");
1509  MyTree->Branch("Gain" ,&tree_Gain ,"Gain/D");
1510  MyTree->Branch("PrevGain" ,&tree_PrevGain ,"PrevGain/D");
1511  MyTree->Branch("PrevGainTick" ,&tree_PrevGainTick,"PrevGainTick/D");
1512  MyTree->Branch("NEntries" ,&tree_NEntries ,"NEntries/D");
1513  MyTree->Branch("isMasked" ,&tree_isMasked ,"isMasked/O");
1514 
1515 
1516  FILE* Gains = stdout;
1517  fprintf(Gains,"NEvents = %i\n",NEvent);
1518  fprintf(Gains,"NTracks = %i\n",NTrack);
1519  //fprintf(Gains,"NClustersPixel = %i\n",NClusterPixel);
1520  fprintf(Gains,"NClustersStrip = %i\n",NClusterStrip);
1521  //fprintf(Gains,"Number of Pixel Dets = %lu\n",static_cast<unsigned long>(NPixelDets));
1522  fprintf(Gains,"Number of Strip APVs = %lu\n",static_cast<unsigned long>(NStripAPVs));
1523  fprintf(Gains,"GoodFits = %i BadFits = %i ratio = %f%% (MASKED=%i)\n",GOOD,BAD,(100.0*GOOD)/(GOOD+BAD), MASKED);
1524 
1525  Gains=fopen(OutputGains.c_str(),"w");
1526  fprintf(Gains,"NEvents = %i\n",NEvent);
1527  fprintf(Gains,"NTracks = %i\n",NTrack);
1528  //fprintf(Gains,"NClustersPixel = %i\n",NClusterPixel);
1529  fprintf(Gains,"NClustersStrip = %i\n",NClusterStrip);
1530  fprintf(Gains,"Number of Strip APVs = %lu\n",static_cast<unsigned long>(NStripAPVs));
1531  //fprintf(Gains,"Number of Pixel Dets = %lu\n",static_cast<unsigned long>(NPixelDets));
1532  fprintf(Gains,"GoodFits = %i BadFits = %i ratio = %f%% (MASKED=%i)\n",GOOD,BAD,(100.0*GOOD)/(GOOD+BAD), MASKED);
1533 
1534  int elepos = statCollectionFromMode(m_calibrationMode.c_str());
1535 
1536  for(unsigned int a=0;a<APVsCollOrdered.size();a++){
1538  if(APV==nullptr)continue;
1539 // printf( "%i | %i | PreviousGain = %7.5f NewGain = %7.5f (#clusters=%8.0f)\n", APV->DetId,APV->APVId,APV->PreviousGain,APV->Gain, APV->NEntries);
1540  fprintf(Gains,"%i | %i | PreviousGain = %7.5f(tick) x %7.5f(particle) NewGain (particle) = %7.5f (#clusters=%8.0f)\n", APV->DetId,APV->APVId,APV->PreviousGainTick, APV->PreviousGain,APV->Gain, APV->NEntries);
1541 
1542  tree_Index = APV->Index;
1543  tree_Bin = (Charge_Vs_Index[elepos])->getTH2S()->GetXaxis()->FindBin(APV->Index);
1544  tree_DetId = APV->DetId;
1545  tree_APVId = APV->APVId;
1546  tree_SubDet = APV->SubDet;
1547  tree_x = APV->x;
1548  tree_y = APV->y;
1549  tree_z = APV->z;
1550  tree_Eta = APV->Eta;
1551  tree_R = APV->R;
1552  tree_Phi = APV->Phi;
1553  tree_Thickness = APV->Thickness;
1554  tree_FitMPV = APV->FitMPV;
1555  tree_FitMPVErr = APV->FitMPVErr;
1556  tree_FitWidth = APV->FitWidth;
1557  tree_FitWidthErr= APV->FitWidthErr;
1558  tree_FitChi2NDF = APV->FitChi2;
1559  tree_FitNorm = APV->FitNorm;
1560  tree_Gain = APV->Gain;
1561  tree_PrevGain = APV->PreviousGain;
1562  tree_PrevGainTick = APV->PreviousGainTick;
1563  tree_NEntries = APV->NEntries;
1564  tree_isMasked = APV->isMasked;
1565 
1566 
1567  if(tree_DetId==402673324){
1568  printf("%i | %i : %f --> %f (%f)\n", tree_DetId, tree_APVId, tree_PrevGain, tree_Gain, tree_NEntries);
1569  }
1570 
1571 
1572  MyTree->Fill();
1573  }
1574  if(Gains)fclose(Gains);
1575 
1576 
1577 }
std::vector< MonitorElement * > Charge_Vs_Index
double FitMPV
Definition: APVGainStruct.h:19
double PreviousGainTick
Definition: APVGainStruct.h:28
unsigned int APVId
Definition: APVGainStruct.h:10
float Thickness
Definition: APVGainStruct.h:18
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
unsigned int DetId
Definition: APVGainStruct.h:9
bool isMasked
Definition: APVGainStruct.h:32
std::vector< stAPVGain * > APVsCollOrdered
double FitWidth
Definition: APVGainStruct.h:21
double Gain
Definition: APVGainStruct.h:25
double PreviousGain
Definition: APVGainStruct.h:27
unsigned int Index
Definition: APVGainStruct.h:7
double FitNorm
Definition: APVGainStruct.h:24
double FitMPVErr
Definition: APVGainStruct.h:20
double FitChi2
Definition: APVGainStruct.h:23
int statCollectionFromMode(const char *tag) const
double NEntries
Definition: APVGainStruct.h:29
double a
Definition: hdecay.h:121
unsigned int SubDet
Definition: APVGainStruct.h:11
double FitWidthErr
Definition: APVGainStruct.h:22
void SiStripGainFromCalibTree::swapBFieldMode ( void  )
private

Definition at line 784 of file SiStripGainFromCalibTree.cc.

References m_calibrationMode.

Referenced by algoBeginJob(), and algoBeginRun().

784  {
785  if ( m_calibrationMode.substr( m_calibrationMode.length()-2 )=="0T" ) {
786  m_calibrationMode.erase( m_calibrationMode.length()-2,2);
787  } else {
788  m_calibrationMode.append( "0T" );
789  }
790 }

Member Data Documentation

std::string SiStripGainFromCalibTree::AlgoMode
private
bool SiStripGainFromCalibTree::AllowSaturation
private

Definition at line 151 of file SiStripGainFromCalibTree.cc.

Referenced by processEvent(), and SiStripGainFromCalibTree().

const std::vector<unsigned char>* SiStripGainFromCalibTree::amplitude = 0
private

Definition at line 295 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and algoAnalyzeTheTree().

edm::EDGetTokenT<std::vector<unsigned char> > SiStripGainFromCalibTree::amplitude_token_
private

Definition at line 295 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

std::unordered_map<unsigned int, stAPVGain*> SiStripGainFromCalibTree::APVsColl
private
std::vector<stAPVGain*> SiStripGainFromCalibTree::APVsCollOrdered
private
unsigned int SiStripGainFromCalibTree::BAD
private
std::string SiStripGainFromCalibTree::booked_dir_
private

Definition at line 177 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos().

string SiStripGainFromCalibTree::CalibPrefix_
private

Definition at line 304 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyzeTheTree(), and SiStripGainFromCalibTree().

int SiStripGainFromCalibTree::CalibrationLevel
private

Definition at line 155 of file SiStripGainFromCalibTree.cc.

Referenced by algoComputeMPVandGain(), and SiStripGainFromCalibTree().

string SiStripGainFromCalibTree::CalibSuffix_
private

Definition at line 305 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyzeTheTree(), and SiStripGainFromCalibTree().

const std::vector<unsigned int>* SiStripGainFromCalibTree::charge = 0
private
std::array< std::vector<APVGain::APVmon>,7 > SiStripGainFromCalibTree::Charge_1
private

Charge per cm per layer / wheel

Definition at line 180 of file SiStripGainFromCalibTree.cc.

Referenced by algoEndRun(), bookDQMHistos(), and processEvent().

std::array< std::vector<APVGain::APVmon>,7 > SiStripGainFromCalibTree::Charge_2
private

Charge per cm per layer / wheel without G2

Definition at line 181 of file SiStripGainFromCalibTree.cc.

Referenced by algoEndRun(), bookDQMHistos(), and processEvent().

std::array< std::vector<APVGain::APVmon>,7 > SiStripGainFromCalibTree::Charge_3
private

Charge per cm per layer / wheel without G1

Definition at line 182 of file SiStripGainFromCalibTree.cc.

Referenced by algoEndRun(), bookDQMHistos(), and processEvent().

std::array< std::vector<APVGain::APVmon>,7 > SiStripGainFromCalibTree::Charge_4
private

Charge per cm per layer / wheel without G1 and G1

Definition at line 183 of file SiStripGainFromCalibTree.cc.

Referenced by algoEndRun(), bookDQMHistos(), and processEvent().

edm::EDGetTokenT<std::vector<unsigned int> > SiStripGainFromCalibTree::charge_token_
private

Definition at line 292 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

std::vector<MonitorElement*> SiStripGainFromCalibTree::Charge_Vs_Index
private
std::vector<MonitorElement*> SiStripGainFromCalibTree::Charge_Vs_PathlengthTECM1
private

Charge vs pathlength in TECP thin

Definition at line 191 of file SiStripGainFromCalibTree.cc.

Referenced by algoEndJob(), algoEndRun(), bookDQMHistos(), processEvent(), and SiStripGainFromCalibTree().

std::vector<MonitorElement*> SiStripGainFromCalibTree::Charge_Vs_PathlengthTECM2
private

Charge vs pathlength in TECP thick

Definition at line 192 of file SiStripGainFromCalibTree.cc.

Referenced by algoEndJob(), algoEndRun(), bookDQMHistos(), processEvent(), and SiStripGainFromCalibTree().

std::vector<MonitorElement*> SiStripGainFromCalibTree::Charge_Vs_PathlengthTECP1
private

Charge vs pathlength in TECP thin

Definition at line 189 of file SiStripGainFromCalibTree.cc.

Referenced by algoEndJob(), algoEndRun(), bookDQMHistos(), processEvent(), and SiStripGainFromCalibTree().

std::vector<MonitorElement*> SiStripGainFromCalibTree::Charge_Vs_PathlengthTECP2
private

Charge vs pathlength in TECP thick

Definition at line 190 of file SiStripGainFromCalibTree.cc.

Referenced by algoEndJob(), algoEndRun(), bookDQMHistos(), processEvent(), and SiStripGainFromCalibTree().

std::vector<MonitorElement*> SiStripGainFromCalibTree::Charge_Vs_PathlengthTIB
private

Charge vs pathlength in TIB

Definition at line 185 of file SiStripGainFromCalibTree.cc.

Referenced by algoEndJob(), algoEndRun(), bookDQMHistos(), processEvent(), and SiStripGainFromCalibTree().

std::vector<MonitorElement*> SiStripGainFromCalibTree::Charge_Vs_PathlengthTIDM
private

Charge vs pathlength in TIDM

Definition at line 188 of file SiStripGainFromCalibTree.cc.

Referenced by algoEndJob(), algoEndRun(), bookDQMHistos(), processEvent(), and SiStripGainFromCalibTree().

std::vector<MonitorElement*> SiStripGainFromCalibTree::Charge_Vs_PathlengthTIDP
private

Charge vs pathlength in TIDP

Definition at line 187 of file SiStripGainFromCalibTree.cc.

Referenced by algoEndJob(), algoEndRun(), bookDQMHistos(), processEvent(), and SiStripGainFromCalibTree().

std::vector<MonitorElement*> SiStripGainFromCalibTree::Charge_Vs_PathlengthTOB
private

Charge vs pathlength in TOB

Definition at line 186 of file SiStripGainFromCalibTree.cc.

Referenced by algoEndJob(), algoEndRun(), bookDQMHistos(), processEvent(), and SiStripGainFromCalibTree().

const std::vector<double>* SiStripGainFromCalibTree::chargeoverpath = 0
private

Definition at line 294 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and algoAnalyzeTheTree().

edm::EDGetTokenT<std::vector<double> > SiStripGainFromCalibTree::chargeoverpath_token_
private

Definition at line 294 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

DQMStore* SiStripGainFromCalibTree::dbe
private
MonitorElement* SiStripGainFromCalibTree::DiffWRTPrevGainTEC
private

ratio gain / PreviousGain for TEC disks

Definition at line 243 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::DiffWRTPrevGainTIB
private

ratio Gain / PreviousGain for TIB layers

Definition at line 240 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::DiffWRTPrevGainTID
private

ratio Gain / PreviousGain for TID disks

Definition at line 241 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::DiffWRTPrevGainTOB
private

ratio Gain / PreviousGain for TOB layers

Definition at line 242 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

bool SiStripGainFromCalibTree::doChargeMonitorPerPlane
private

Charge monitor per detector plane

Definition at line 161 of file SiStripGainFromCalibTree.cc.

Referenced by algoEndRun(), bookDQMHistos(), and SiStripGainFromCalibTree().

std::vector<string> SiStripGainFromCalibTree::dqm_tag_
private

Definition at line 176 of file SiStripGainFromCalibTree.cc.

Referenced by algoBeginJob(), and SiStripGainFromCalibTree().

unsigned int SiStripGainFromCalibTree::ERun
private

Definition at line 260 of file SiStripGainFromCalibTree.cc.

Referenced by algoBeginJob(), and processEvent().

unsigned int SiStripGainFromCalibTree::eventnumber =0
private

Definition at line 268 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), algoAnalyzeTheTree(), and processEvent().

string SiStripGainFromCalibTree::EventPrefix_
private

Definition at line 300 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyzeTheTree(), and SiStripGainFromCalibTree().

string SiStripGainFromCalibTree::EventSuffix_
private

Definition at line 301 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyzeTheTree(), and SiStripGainFromCalibTree().

const std::vector<bool>* SiStripGainFromCalibTree::farfromedge = 0
private

Definition at line 291 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), algoAnalyzeTheTree(), and processEvent().

edm::EDGetTokenT<std::vector<bool> > SiStripGainFromCalibTree::farfromedge_token_
private

Definition at line 291 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

bool SiStripGainFromCalibTree::FirstSetOfConstants
private

Definition at line 152 of file SiStripGainFromCalibTree.cc.

Referenced by processEvent(), and SiStripGainFromCalibTree().

const std::vector<unsigned short>* SiStripGainFromCalibTree::firststrip = 0
private

Definition at line 287 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), algoAnalyzeTheTree(), and processEvent().

edm::EDGetTokenT<std::vector<unsigned short> > SiStripGainFromCalibTree::firststrip_token_
private

Definition at line 287 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

MonitorElement* SiStripGainFromCalibTree::Gains
private

distribution of gain factors

Definition at line 215 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), qualityMonitor(), and storeOnTree().

const std::vector<double>* SiStripGainFromCalibTree::gainused = 0
private

Definition at line 296 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and algoAnalyzeTheTree().

edm::EDGetTokenT<std::vector<double> > SiStripGainFromCalibTree::gainused_token_
private

Definition at line 296 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

const std::vector<double>* SiStripGainFromCalibTree::gainusedTick = 0
private

Definition at line 297 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and algoAnalyzeTheTree().

edm::EDGetTokenT<std::vector<double> > SiStripGainFromCalibTree::gainusedTick_token_
private

Definition at line 297 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

MonitorElement* SiStripGainFromCalibTree::GainVsPrevGainTEC
private

Gain vs PreviousGain for TEC

Definition at line 248 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::GainVsPrevGainTIB
private

Gain vs PreviousGain for TIB

Definition at line 245 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::GainVsPrevGainTID
private

Gain vs PreviousGain for TID

Definition at line 246 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::GainVsPrevGainTOB
private

Gain vs PreviousGain for TOB

Definition at line 247 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

unsigned int SiStripGainFromCalibTree::GOOD
private
const std::vector<double>* SiStripGainFromCalibTree::localdirx = 0
private

Definition at line 284 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and algoAnalyzeTheTree().

edm::EDGetTokenT<std::vector<double> > SiStripGainFromCalibTree::localdirx_token_
private

Definition at line 284 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

const std::vector<double>* SiStripGainFromCalibTree::localdiry = 0
private

Definition at line 285 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and algoAnalyzeTheTree().

edm::EDGetTokenT<std::vector<double> > SiStripGainFromCalibTree::localdiry_token_
private

Definition at line 285 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

const std::vector<double>* SiStripGainFromCalibTree::localdirz = 0
private

Definition at line 286 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and algoAnalyzeTheTree().

edm::EDGetTokenT<std::vector<double> > SiStripGainFromCalibTree::localdirz_token_
private

Definition at line 286 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

std::string SiStripGainFromCalibTree::m_calibrationMode
private
std::string SiStripGainFromCalibTree::m_calibrationPath
private

Definition at line 163 of file SiStripGainFromCalibTree.cc.

Referenced by MakeCalibrationMap(), and SiStripGainFromCalibTree().

std::string SiStripGainFromCalibTree::m_DQMdir
private

DQM folder hosting the charge statistics and the monitor plots

Definition at line 164 of file SiStripGainFromCalibTree.cc.

Referenced by algoBeginJob(), algoEndRun(), and SiStripGainFromCalibTree().

bool SiStripGainFromCalibTree::m_harvestingMode
private
bool SiStripGainFromCalibTree::m_splitDQMstat
private

Definition at line 160 of file SiStripGainFromCalibTree.cc.

Referenced by algoBeginJob(), algoEndRun(), and SiStripGainFromCalibTree().

double SiStripGainFromCalibTree::MagFieldCurrentTh
private
unsigned int SiStripGainFromCalibTree::MASKED
private

Definition at line 263 of file SiStripGainFromCalibTree.cc.

Referenced by algoBeginJob(), algoComputeMPVandGain(), and storeOnTree().

double SiStripGainFromCalibTree::MaxChi2OverNDF
private

Definition at line 142 of file SiStripGainFromCalibTree.cc.

Referenced by SiStripGainFromCalibTree().

double SiStripGainFromCalibTree::MaxMPVError
private

Definition at line 141 of file SiStripGainFromCalibTree.cc.

Referenced by SiStripGainFromCalibTree().

unsigned int SiStripGainFromCalibTree::MaxNrStrips
private

Definition at line 147 of file SiStripGainFromCalibTree.cc.

Referenced by processEvent(), and SiStripGainFromCalibTree().

double SiStripGainFromCalibTree::MaxTrackChiOverNdf
private

Definition at line 149 of file SiStripGainFromCalibTree.cc.

Referenced by processEvent(), and SiStripGainFromCalibTree().

double SiStripGainFromCalibTree::MaxTrackEta
private

Definition at line 146 of file SiStripGainFromCalibTree.cc.

Referenced by processEvent(), and SiStripGainFromCalibTree().

int SiStripGainFromCalibTree::MaxTrackingIteration
private

Definition at line 150 of file SiStripGainFromCalibTree.cc.

Referenced by processEvent(), and SiStripGainFromCalibTree().

double SiStripGainFromCalibTree::MaxTrackMomentum
private

Definition at line 144 of file SiStripGainFromCalibTree.cc.

Referenced by processEvent(), and SiStripGainFromCalibTree().

double SiStripGainFromCalibTree::MinNrEntries
private

Definition at line 140 of file SiStripGainFromCalibTree.cc.

Referenced by getPeakOfLandau(), and SiStripGainFromCalibTree().

double SiStripGainFromCalibTree::MinTrackEta
private

Definition at line 145 of file SiStripGainFromCalibTree.cc.

Referenced by processEvent(), and SiStripGainFromCalibTree().

unsigned int SiStripGainFromCalibTree::MinTrackHits
private

Definition at line 148 of file SiStripGainFromCalibTree.cc.

Referenced by processEvent(), and SiStripGainFromCalibTree().

double SiStripGainFromCalibTree::MinTrackMomentum
private

Definition at line 143 of file SiStripGainFromCalibTree.cc.

Referenced by processEvent(), and SiStripGainFromCalibTree().

MonitorElement* SiStripGainFromCalibTree::MPV_Vs_EtaTEC
private

MPV vs Eta for TEC planes

Definition at line 201 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPV_Vs_EtaTECthick
private

MPV vs Eta for TEC tick planes

Definition at line 203 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPV_Vs_EtaTECthin
private

MPV vs Eta for TEC thin planes

Definition at line 202 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPV_Vs_EtaTIB
private

MPV vs Eta for TIB planes

Definition at line 198 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPV_Vs_EtaTID
private

MPV vs Eta for TID planes

Definition at line 199 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPV_Vs_EtaTOB
private

MPV vs Eta for TOB planes

Definition at line 200 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPV_Vs_PhiTEC
private

MPV vs Phi for TEC planes

Definition at line 208 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPV_Vs_PhiTECthick
private

MPV vs Phi for TID tick planes

Definition at line 210 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPV_Vs_PhiTECthin
private

MPV vs Phi for TEC thin planes

Definition at line 209 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPV_Vs_PhiTIB
private

MPV vs Phi for TIB planes

Definition at line 205 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPV_Vs_PhiTID
private

MPV vs Phi for TID planes

Definition at line 206 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPV_Vs_PhiTOB
private

MPV vs Phi for TOB planes

Definition at line 207 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVError
private

error of Landau fit

Definition at line 234 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVErrorVsEta
private

error of Landau fit vs Eta

Definition at line 236 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVErrorVsMPV
private

error of Landau fit vs MPV

Definition at line 235 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVErrorVsN
private

error of landau fit vs number of entries

Definition at line 238 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVErrorVsPhi
private

error of Landau fit vs Phi

Definition at line 237 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVs
private

distribution of MPVs

Definition at line 216 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVs320
private

distribution of MPVs for thin sensors

Definition at line 217 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVs500
private

distribution of MPVs for tick sensors

Definition at line 218 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVsTEC
private

distribution of MPVs for TEC disks

Definition at line 224 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVsTECM
private

distribution of MPVs for TECM disks

Definition at line 226 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVsTECM1
private

distribution of MPVs for TECM thin sensors

Definition at line 231 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVsTECM2
private

distribution of MPVs for TECM tick sensors

Definition at line 232 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVsTECP
private

distribution of MPVs for TECP disks

Definition at line 225 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVsTECP1
private

distribution of MPVs for TECP thin sensors

Definition at line 229 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVsTECP2
private

distribution of MPVs for TECP tick sensors

Definition at line 230 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVsTECthick
private

distribution of MPVs for TEC tick sensors

Definition at line 228 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVsTECthin
private

distribution of MPVs for TEC thin sensors

Definition at line 227 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVsTIB
private

distribution of MPVs for TIB planes

Definition at line 219 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVsTID
private

distribution of MPVs for TID disks

Definition at line 220 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVsTIDM
private

distribution of MPVs for TIDM disks

Definition at line 222 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVsTIDP
private

distribution of MPVs for TIDP disks

Definition at line 221 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::MPVsTOB
private

distribution of MPVs for TOB planes

Definition at line 223 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

unsigned int SiStripGainFromCalibTree::NClusterPixel
private

Definition at line 256 of file SiStripGainFromCalibTree.cc.

Referenced by algoBeginJob(), and processEvent().

unsigned int SiStripGainFromCalibTree::NClusterStrip
private

Definition at line 255 of file SiStripGainFromCalibTree.cc.

Referenced by algoBeginJob(), algoEndJob(), processEvent(), and storeOnTree().

unsigned int SiStripGainFromCalibTree::NEvent
private
std::vector<APVGain::APVmon> SiStripGainFromCalibTree::newCharge
private

Definition at line 250 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::NoMPVfit
private

R,Z map of missing APV calibration (no fit)

Definition at line 213 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

MonitorElement* SiStripGainFromCalibTree::NoMPVmasked
private

R,Z map of missing APV calibration (masked modules)

Definition at line 212 of file SiStripGainFromCalibTree.cc.

Referenced by bookDQMHistos(), and qualityMonitor().

int SiStripGainFromCalibTree::NPixelDets
private

Definition at line 258 of file SiStripGainFromCalibTree.cc.

Referenced by algoBeginJob().

int SiStripGainFromCalibTree::NStripAPVs
private
const std::vector<unsigned short>* SiStripGainFromCalibTree::nstrips = 0
private

Definition at line 288 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), algoAnalyzeTheTree(), and processEvent().

edm::EDGetTokenT<std::vector<unsigned short> > SiStripGainFromCalibTree::nstrips_token_
private

Definition at line 288 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

unsigned int SiStripGainFromCalibTree::NTrack
private

Definition at line 254 of file SiStripGainFromCalibTree.cc.

Referenced by algoBeginJob(), processEvent(), and storeOnTree().

bool SiStripGainFromCalibTree::OldGainRemoving
private

Definition at line 154 of file SiStripGainFromCalibTree.cc.

Referenced by processEvent(), and SiStripGainFromCalibTree().

std::string SiStripGainFromCalibTree::OutputGains
private

Definition at line 171 of file SiStripGainFromCalibTree.cc.

Referenced by SiStripGainFromCalibTree(), and storeOnTree().

const std::vector<bool>* SiStripGainFromCalibTree::overlapping = 0
private

Definition at line 290 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), algoAnalyzeTheTree(), and processEvent().

edm::EDGetTokenT<std::vector<bool> > SiStripGainFromCalibTree::overlapping_token_
private

Definition at line 290 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

const std::vector<double>* SiStripGainFromCalibTree::path = 0
private
edm::EDGetTokenT<std::vector<double> > SiStripGainFromCalibTree::path_token_
private

Definition at line 293 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

const std::vector<unsigned int>* SiStripGainFromCalibTree::rawid = 0
private

Definition at line 283 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), algoAnalyzeTheTree(), and processEvent().

edm::EDGetTokenT<std::vector<unsigned int> > SiStripGainFromCalibTree::rawid_token_
private

Definition at line 283 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

unsigned int SiStripGainFromCalibTree::runnumber =0
private

Definition at line 269 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), algoAnalyzeTheTree(), and processEvent().

const std::vector<bool>* SiStripGainFromCalibTree::saturation = 0
private

Definition at line 289 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), algoAnalyzeTheTree(), and processEvent().

edm::EDGetTokenT<std::vector<bool> > SiStripGainFromCalibTree::saturation_token_
private

Definition at line 289 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

bool SiStripGainFromCalibTree::saveSummary
private

Definition at line 157 of file SiStripGainFromCalibTree.cc.

Referenced by algoEndJob(), and SiStripGainFromCalibTree().

unsigned int SiStripGainFromCalibTree::SRun
private

Definition at line 259 of file SiStripGainFromCalibTree.cc.

Referenced by algoBeginJob(), and processEvent().

double SiStripGainFromCalibTree::tagCondition_GoodFrac
private

Definition at line 168 of file SiStripGainFromCalibTree.cc.

Referenced by produceTagFilter(), and SiStripGainFromCalibTree().

double SiStripGainFromCalibTree::tagCondition_NClusters
private

Definition at line 167 of file SiStripGainFromCalibTree.cc.

Referenced by produceTagFilter(), and SiStripGainFromCalibTree().

TFileService* SiStripGainFromCalibTree::tfs
private

Definition at line 137 of file SiStripGainFromCalibTree.cc.

Referenced by algoEndJob().

const std::vector<int>* SiStripGainFromCalibTree::trackalgo = 0
private

Definition at line 279 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), algoAnalyzeTheTree(), and processEvent().

edm::EDGetTokenT<std::vector<int> > SiStripGainFromCalibTree::trackalgo_token_
private

Definition at line 279 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

const std::vector<double>* SiStripGainFromCalibTree::trackchi2ndof = 0
private

Definition at line 273 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), algoAnalyzeTheTree(), and processEvent().

edm::EDGetTokenT<std::vector<double> > SiStripGainFromCalibTree::trackchi2ndof_token_
private

Definition at line 273 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

const std::vector<double>* SiStripGainFromCalibTree::tracketa = 0
private

Definition at line 276 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), algoAnalyzeTheTree(), and processEvent().

edm::EDGetTokenT<std::vector<double> > SiStripGainFromCalibTree::tracketa_token_
private

Definition at line 276 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

const std::vector<unsigned int>* SiStripGainFromCalibTree::trackhitsvalid = 0
private

Definition at line 278 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), algoAnalyzeTheTree(), and processEvent().

edm::EDGetTokenT<std::vector<unsigned int> > SiStripGainFromCalibTree::trackhitsvalid_token_
private

Definition at line 278 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

const std::vector<int>* SiStripGainFromCalibTree::trackindex = 0
private

Definition at line 282 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and algoAnalyzeTheTree().

edm::EDGetTokenT<std::vector<int> > SiStripGainFromCalibTree::trackindex_token_
private

Definition at line 282 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

const std::vector<float>* SiStripGainFromCalibTree::trackp = 0
private

Definition at line 274 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), algoAnalyzeTheTree(), and processEvent().

edm::EDGetTokenT<std::vector<float> > SiStripGainFromCalibTree::trackp_token_
private

Definition at line 274 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

const std::vector<double>* SiStripGainFromCalibTree::trackphi = 0
private

Definition at line 277 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and algoAnalyzeTheTree().

edm::EDGetTokenT<std::vector<double> > SiStripGainFromCalibTree::trackphi_token_
private

Definition at line 277 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

string SiStripGainFromCalibTree::TrackPrefix_
private

Definition at line 302 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyzeTheTree(), and SiStripGainFromCalibTree().

const std::vector<float>* SiStripGainFromCalibTree::trackpt = 0
private

Definition at line 275 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and algoAnalyzeTheTree().

edm::EDGetTokenT<std::vector<float> > SiStripGainFromCalibTree::trackpt_token_
private

Definition at line 275 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

string SiStripGainFromCalibTree::TrackSuffix_
private

Definition at line 303 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyzeTheTree(), and SiStripGainFromCalibTree().

const std::vector<bool>* SiStripGainFromCalibTree::TrigTech = 0
private

Definition at line 270 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and algoAnalyzeTheTree().

edm::EDGetTokenT<std::vector<bool> > SiStripGainFromCalibTree::TrigTech_token_
private

Definition at line 270 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripGainFromCalibTree().

const TrackerTopology* SiStripGainFromCalibTree::tTopo_
private
bool SiStripGainFromCalibTree::useCalibration
private
bool SiStripGainFromCalibTree::Validation
private

Definition at line 153 of file SiStripGainFromCalibTree.cc.

Referenced by processEvent(), and SiStripGainFromCalibTree().

std::vector<std::string> SiStripGainFromCalibTree::VChargeHisto
private

Charge monitor plots to be output

Definition at line 165 of file SiStripGainFromCalibTree.cc.

Referenced by algoEndRun(), bookDQMHistos(), and SiStripGainFromCalibTree().

vector<string> SiStripGainFromCalibTree::VInputFiles
private

Definition at line 172 of file SiStripGainFromCalibTree.cc.

Referenced by algoAnalyzeTheTree(), and SiStripGainFromCalibTree().