CMS 3D CMS Logo

SiStripGainsPCLWorker.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: CalibTracker/SiStripChannelGain
4 // Class: SiStripGainsPCLWorker
5 //
10 //
11 // Original Author: L. Quertermont (calibration algorithm)
12 // Contributors: M. Verzetti (data access)
13 // A. Di Mattia (PCL multi stream processing and monitoring)
14 // M. Delcourt (monitoring)
15 // M. Musich (migration to thread-safe DQMStore access)
16 //
17 // Created: Wed, 12 Apr 2017 14:46:48 GMT
18 //
19 
20 // CMSSW includes
62 
66 
67 // System includes
68 #include <unordered_map>
69 
70 //
71 // class declaration
72 //
73 
75 public:
77 
78  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
79 
80 private:
81  virtual void beginJob() ;
82  void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override;
83  void dqmBeginRun(edm::Run const&, edm::EventSetup const&) override;
84  void analyze(const edm::Event&, const edm::EventSetup&) override;
85  virtual void endJob() ;
86 
87  void processEvent(const TrackerTopology* topo); //what really does the job
88  virtual void checkBookAPVColls(const edm::EventSetup& setup);
89 
90  std::vector<std::string> dqm_tag_;
91 
92  int statCollectionFromMode(const char* tag) const;
93 
94  std::vector<MonitorElement*> Charge_Vs_Index;
95  std::array< std::vector<APVGain::APVmon>,7 > Charge_1;
96  std::array< std::vector<APVGain::APVmon>,7 > Charge_2;
97  std::array< std::vector<APVGain::APVmon>,7 > Charge_3;
98  std::array< std::vector<APVGain::APVmon>,7 > Charge_4;
100  std::vector<MonitorElement*> Charge_Vs_PathlengthTIB;
101  std::vector<MonitorElement*> Charge_Vs_PathlengthTOB;
102  std::vector<MonitorElement*> Charge_Vs_PathlengthTIDP;
103  std::vector<MonitorElement*> Charge_Vs_PathlengthTIDM;
104  std::vector<MonitorElement*> Charge_Vs_PathlengthTECP1;
105  std::vector<MonitorElement*> Charge_Vs_PathlengthTECP2;
106  std::vector<MonitorElement*> Charge_Vs_PathlengthTECM1;
107  std::vector<MonitorElement*> Charge_Vs_PathlengthTECM2;
111  unsigned int NEvent;
112  unsigned int NTrack;
113  unsigned int NClusterStrip;
114  unsigned int NClusterPixel;
117  unsigned int SRun;
118  unsigned int ERun;
119 
122  double MinTrackEta;
123  double MaxTrackEta;
124  unsigned int MaxNrStrips;
125  unsigned int MinTrackHits;
137  std::vector<std::string> VChargeHisto;
140  const TrackerGeometry *bareTkGeomPtr_; // ugly hack to fill APV colls only once, but checks
141 
142  //Data members for processing
143 
144  //Event data
145  unsigned int eventnumber =0;
146  unsigned int runnumber =0;
147  const std::vector<bool>* TrigTech =nullptr; edm::EDGetTokenT<std::vector<bool> > TrigTech_token_;
148 
149  // Track data
151  const std::vector<float>* trackp =nullptr; edm::EDGetTokenT<std::vector<float> > trackp_token_;
152  const std::vector<float>* trackpt =nullptr; edm::EDGetTokenT<std::vector<float> > trackpt_token_;
153  const std::vector<double>* tracketa =nullptr; edm::EDGetTokenT<std::vector<double> > tracketa_token_;
154  const std::vector<double>* trackphi =nullptr; edm::EDGetTokenT<std::vector<double> > trackphi_token_;
156  const std::vector<int>* trackalgo =nullptr; edm::EDGetTokenT<std::vector<int> > trackalgo_token_;
157 
158  // CalibTree data
160  const std::vector<unsigned int>* rawid =nullptr; edm::EDGetTokenT<std::vector<unsigned int> > rawid_token_;
161  const std::vector<double>* localdirx =nullptr; edm::EDGetTokenT<std::vector<double> > localdirx_token_;
162  const std::vector<double>* localdiry =nullptr; edm::EDGetTokenT<std::vector<double> > localdiry_token_;
163  const std::vector<double>* localdirz =nullptr; edm::EDGetTokenT<std::vector<double> > localdirz_token_;
164  const std::vector<unsigned short>* firststrip =nullptr; edm::EDGetTokenT<std::vector<unsigned short> > firststrip_token_;
165  const std::vector<unsigned short>* nstrips =nullptr; edm::EDGetTokenT<std::vector<unsigned short> > nstrips_token_;
169  const std::vector<unsigned int>* charge =nullptr; edm::EDGetTokenT<std::vector<unsigned int> > charge_token_;
170  const std::vector<double>* path =nullptr; edm::EDGetTokenT<std::vector<double> > path_token_;
172  const std::vector<unsigned char>* amplitude =nullptr; edm::EDGetTokenT<std::vector<unsigned char> > amplitude_token_;
173  const std::vector<double>* gainused =nullptr; edm::EDGetTokenT<std::vector<double> > gainused_token_;
175 
178  std::string TrackPrefix_; //("track");
180  std::string CalibPrefix_; //("GainCalibration");
182 
183  std::vector<std::shared_ptr<stAPVGain> > APVsCollOrdered;
184  std::unordered_map<unsigned int, std::shared_ptr<stAPVGain> > APVsColl;
185 
186 };
187 
188 inline int
190 {
191  std::vector<std::string>::const_iterator it=dqm_tag_.begin();
192  while(it!=dqm_tag_.end()) {
193  if(*it==std::string(tag)) return it-dqm_tag_.begin();
194  it++;
195  }
196 
197  if (std::string(tag)=="") return 0; // return StdBunch calibration mode for backward compatibility
198 
199  return None;
200 }
201 
202 template<typename T>
203 inline edm::Handle<T> connect(const T* &ptr, edm::EDGetTokenT<T> token, const edm::Event &evt) {
205  evt.getByToken(token, handle);
206  ptr = handle.product();
207  return handle; //return handle to keep alive pointer (safety first)
208 }
std::vector< MonitorElement * > Charge_Vs_PathlengthTOB
const std::vector< double > * chargeoverpath
edm::EDGetTokenT< std::vector< double > > gainused_token_
const std::vector< int > * trackalgo
edm::EDGetTokenT< std::vector< double > > localdirz_token_
edm::EDGetTokenT< std::vector< bool > > saturation_token_
std::array< std::vector< APVGain::APVmon >, 7 > Charge_1
edm::EDGetTokenT< std::vector< double > > trackchi2ndof_token_
edm::EDGetTokenT< std::vector< double > > gainusedTick_token_
virtual void checkBookAPVColls(const edm::EventSetup &setup)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
edm::EDGetTokenT< std::vector< float > > trackp_token_
SiStripGainsPCLWorker(const edm::ParameterSet &)
const TrackerGeometry * bareTkGeomPtr_
const std::vector< bool > * TrigTech
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:1
const std::vector< int > * trackindex
const std::vector< float > * trackpt
const std::vector< unsigned int > * rawid
std::vector< std::shared_ptr< stAPVGain > > APVsCollOrdered
void analyze(const edm::Event &, const edm::EventSetup &) override
const std::vector< unsigned int > * charge
const std::vector< double > * path
const std::vector< bool > * farfromedge
edm::EDGetTokenT< std::vector< unsigned int > > trackhitsvalid_token_
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
edm::EDGetTokenT< std::vector< unsigned short > > firststrip_token_
edm::EDGetTokenT< std::vector< bool > > farfromedge_token_
edm::EDGetTokenT< std::vector< bool > > overlapping_token_
const std::vector< double > * gainusedTick
std::vector< std::string > dqm_tag_
edm::EDGetTokenT< std::vector< unsigned short > > nstrips_token_
const std::vector< double > * tracketa
edm::EDGetTokenT< std::vector< double > > tracketa_token_
const std::vector< double > * localdiry
const std::vector< float > * trackp
const std::vector< bool > * saturation
edm::ESHandle< TrackerGeometry > tkGeom_
std::unordered_map< unsigned int, std::shared_ptr< stAPVGain > > APVsColl
const std::vector< double > * localdirz
const std::vector< double > * trackphi
std::vector< MonitorElement * > Charge_Vs_PathlengthTIB
void dqmBeginRun(edm::Run const &, edm::EventSetup const &) override
std::array< std::vector< APVGain::APVmon >, 7 > Charge_4
const std::vector< bool > * overlapping
edm::EDGetTokenT< std::vector< int > > trackindex_token_
const std::vector< double > * localdirx
edm::EDGetTokenT< std::vector< double > > localdirx_token_
edm::EDGetTokenT< std::vector< unsigned int > > charge_token_
std::vector< MonitorElement * > Charge_Vs_PathlengthTECP1
edm::EDGetTokenT< std::vector< double > > trackphi_token_
const std::vector< unsigned short > * firststrip
const std::vector< unsigned int > * trackhitsvalid
std::vector< MonitorElement * > Charge_Vs_PathlengthTECM2
T const * product() const
Definition: Handle.h:81
edm::EDGetTokenT< std::vector< float > > trackpt_token_
std::array< std::vector< APVGain::APVmon >, 7 > Charge_2
edm::Handle< T > connect(const T *&ptr, edm::EDGetTokenT< T > token, const edm::Event &evt)
std::vector< std::string > VChargeHisto
edm::EDGetTokenT< std::vector< double > > path_token_
std::vector< MonitorElement * > Charge_Vs_PathlengthTECM1
const std::vector< unsigned char > * amplitude
std::array< std::vector< APVGain::APVmon >, 7 > Charge_3
void processEvent(const TrackerTopology *topo)
int statCollectionFromMode(const char *tag) const
edm::EDGetTokenT< std::vector< double > > chargeoverpath_token_
const std::vector< double > * trackchi2ndof
edm::EDGetTokenT< std::vector< int > > trackalgo_token_
std::vector< MonitorElement * > Charge_Vs_PathlengthTECP2
edm::EDGetTokenT< std::vector< double > > localdiry_token_
std::vector< MonitorElement * > Charge_Vs_PathlengthTIDP
long double T
edm::EDGetTokenT< std::vector< unsigned char > > amplitude_token_
const std::vector< unsigned short > * nstrips
std::vector< MonitorElement * > Charge_Vs_PathlengthTIDM
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: Run.h:43
const std::vector< double > * gainused
edm::EDGetTokenT< std::vector< unsigned int > > rawid_token_
std::vector< MonitorElement * > Charge_Vs_Index
edm::EDGetTokenT< std::vector< bool > > TrigTech_token_