CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
SiStripHitEffFromCalibTree Class Reference
Inheritance diagram for SiStripHitEffFromCalibTree:
ConditionDBWriter< SiStripBadStrip > edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

 SiStripHitEffFromCalibTree (const edm::ParameterSet &)
 
 ~SiStripHitEffFromCalibTree ()
 
- Public Member Functions inherited from ConditionDBWriter< SiStripBadStrip >
 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
 
virtual ~EDAnalyzer ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

virtual void algoAnalyze (const edm::Event &e, const edm::EventSetup &c) override
 
virtual void algoBeginJob ()
 
virtual void algoEndJob () override
 
float calcPhi (float x, float y)
 
SiStripBadStripgetNewObject () override
 
void makeHotColdMaps ()
 
void makeSQLite ()
 
void makeSummary ()
 
void makeTKMap ()
 
void SetBadComponents (int i, int component, SiStripQuality::BadComponent &BC, std::stringstream ssV[4][19], int NBadComponent[4][19][4])
 
void totalStatistics ()
 

Private Attributes

unsigned int _bunchx
 
float _ResXSig
 
int alllayerfound [35]
 
int alllayertotal [35]
 
map< unsigned int, double > BadModules
 
TTree * CalibTree
 
TFile * CalibTreeFile
 
TString CalibTreeFilename
 
unsigned int doSummary
 
edm::FileInPath FileInPath_
 
edm::Service< TFileServicefs
 
int goodlayerfound [35]
 
int goodlayertotal [35]
 
vector< hithits [23]
 
vector< TH2F * > HotColdMaps
 
int layerfound [23]
 
int layertotal [23]
 
map< unsigned int, pair
< unsigned int, unsigned int > > 
modCounter [23]
 
unsigned int nModsMin
 
SiStripQualityquality_
 
SiStripDetInfoFileReaderreader
 
float threshold
 
TrackerMaptkmap
 
TrackerMaptkmapbad
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- 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< SiStripBadStrip >
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 92 of file SiStripHitEffFromCalibTree.cc.

Constructor & Destructor Documentation

SiStripHitEffFromCalibTree::SiStripHitEffFromCalibTree ( const edm::ParameterSet conf)
explicit

Definition at line 137 of file SiStripHitEffFromCalibTree.cc.

References _bunchx, _ResXSig, CalibTreeFilename, doSummary, FileInPath_, edm::FileInPath::fullPath(), edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), nModsMin, quality_, reader, OfflineSiStripConfigDb_cff::SiStripDetInfoFileReader, AlCaHarvesting_cff::SiStripQuality, AlCaHLTBitMon_QueryRunRegistry::string, and threshold.

137  :
139  FileInPath_("CalibTracker/SiStripCommon/data/SiStripDetInfo.dat")
140 {
141  CalibTreeFilename = conf.getParameter<std::string>("CalibTreeFilename");
142  threshold = conf.getParameter<double>("Threshold");
143  nModsMin = conf.getParameter<int>("nModsMin");
144  doSummary = conf.getParameter<int>("doSummary");
145  _ResXSig = conf.getUntrackedParameter<double>("ResXSig",-1);
146  _bunchx = conf.getUntrackedParameter<int>("BunchCrossing",0);
148 
149  quality_ = new SiStripQuality;
150 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
SiStripDetInfoFileReader * reader
tuple conf
Definition: dbtoconf.py:185
std::string fullPath() const
Definition: FileInPath.cc:165
SiStripHitEffFromCalibTree::~SiStripHitEffFromCalibTree ( )

Definition at line 152 of file SiStripHitEffFromCalibTree.cc.

152 { }

Member Function Documentation

void SiStripHitEffFromCalibTree::algoAnalyze ( const edm::Event e,
const edm::EventSetup c 
)
overrideprivatevirtual

Reimplemented from ConditionDBWriter< SiStripBadStrip >.

Definition at line 164 of file SiStripHitEffFromCalibTree.cc.

References _bunchx, _ResXSig, a, accept(), alllayerfound, alllayertotal, CalibTree, CalibTreeFile, CalibTreeFilename, gather_cfg::cout, SiStripBadStrip::decode(), cond::rpcobgas::detid, end, edm::EventID::event(), edm::EventSetup::get(), SiStripQuality::getBadComponentList(), SiStripBadStrip::getDataVectorBegin(), SiStripDetInfoFileReader::getNumberOfApvsAndStripLength(), SiStripBadStrip::getRegistryVectorBegin(), SiStripBadStrip::getRegistryVectorEnd(), goodlayerfound, goodlayertotal, hits, i, edm::EventBase::id(), hit::id, j, relval_steps::k, prof2calltree::l, edm::EventBase::luminosityBlock(), makeHotColdMaps(), makeSQLite(), makeSummary(), makeTKMap(), modCounter, cmsHarvester::nevents, nModsMin, edm::ESHandle< class >::product(), HLT_25ns14e33_v1_cff::quality, quality_, SiStripBadStrip::data::range, reader, edm::EventID::run(), SetBadComponents(), DetId::subdetId(), SiStripDetId::TEC, TrackerTopology::tecSide(), TrackerTopology::tecWheel(), threshold, SiStripDetId::TIB, TrackerTopology::tibLayer(), SiStripDetId::TID, TrackerTopology::tidSide(), TrackerTopology::tidWheel(), edm::EventBase::time(), SiStripDetId::TOB, TrackerTopology::tobLayer(), totalStatistics(), edm::Timestamp::value(), x, hit::x, detailsBasic3DVector::y, hit::y, detailsBasic3DVector::z, and hit::z.

164  {
165  //Retrieve tracker topology from geometry
166  edm::ESHandle<TrackerTopology> tTopoHandle;
167  c.get<IdealGeometryRecord>().get(tTopoHandle);
168  const TrackerTopology* const tTopo = tTopoHandle.product();
169 
170  //Open the ROOT Calib Tree
171  CalibTreeFile = TFile::Open(CalibTreeFilename,"READ");
172  CalibTreeFile->cd("anEff");
173  CalibTree = (TTree*)(gDirectory->Get("traj")) ;
174  TLeaf* BadLf = CalibTree->GetLeaf("ModIsBad");
175  TLeaf* sistripLf = CalibTree->GetLeaf("SiStripQualBad");
176  TLeaf* idLf = CalibTree->GetLeaf("Id");
177  TLeaf* acceptLf = CalibTree->GetLeaf("withinAcceptance");
178  TLeaf* layerLf = CalibTree->GetLeaf("layer");
179  TLeaf* nHitsLf = CalibTree->GetLeaf("nHits");
180  TLeaf* xLf = CalibTree->GetLeaf("TrajGlbX");
181  TLeaf* yLf = CalibTree->GetLeaf("TrajGlbY");
182  TLeaf* zLf = CalibTree->GetLeaf("TrajGlbZ");
183  TLeaf* ResXSigLf = CalibTree->GetLeaf("ResXSig");
184  TLeaf* BunchLf(0);
185  for(int l=0; l < 35; l++) {
186  goodlayertotal[l] = 0;
187  goodlayerfound[l] = 0;
188  alllayertotal[l] = 0;
189  alllayerfound[l] = 0;
190  }
191  if(_bunchx != 0) {
192  BunchLf = CalibTree->GetLeaf("bunchx");
193  }
194  int nevents = CalibTree->GetEntries();
195  cout << "Successfully loaded analyze function with " << nevents << " events!\n";
196  cout << "A module is bad if efficiency < " << threshold << " and has at least " << nModsMin << " nModsMin." << endl;
197 
198  //Loop through all of the events
199  for(int j =0; j < nevents; j++) {
200  CalibTree->GetEvent(j);
201  unsigned int isBad = (unsigned int)BadLf->GetValue();
202  unsigned int quality = (unsigned int)sistripLf->GetValue();
203  unsigned int id = (unsigned int)idLf->GetValue();
204  unsigned int accept = (unsigned int)acceptLf->GetValue();
205  unsigned int layer = (unsigned int)layerLf->GetValue();
206  unsigned int nHits = (unsigned int)nHitsLf->GetValue();
207  double x = xLf->GetValue();
208  double y = yLf->GetValue();
209  double z = zLf->GetValue();
210  double resxsig = ResXSigLf->GetValue();
211  bool badquality = false;
212  if(_bunchx != 0) {
213  if(_bunchx != BunchLf->GetValue()) continue;
214  }
215  //We have two things we want to do, both an XY color plot, and the efficiency measurement
216  //First, ignore anything that isn't in acceptance and isn't good quality
217 
218  //if(quality == 1 || accept != 1 || nHits < 8) continue;
219  if(accept != 1 || nHits < 8) continue;
220  if(quality == 1) badquality = true;
221 
222  //Now that we have a good event, we need to look at if we expected it or not, and the location
223  //if we didn't
224  //Fill the missing hit information first
225  bool badflag = false;
226  if(_ResXSig < 0) {
227  if(isBad == 1) badflag = true;
228  }
229  else {
230  if(isBad == 1 || resxsig > _ResXSig) badflag = true;
231  }
232  if(badflag && !badquality) {
233  hit temphit;
234  temphit.x = x;
235  temphit.y = y;
236  temphit.z = z;
237  temphit.id = id;
238  hits[layer].push_back(temphit);
239  }
240  pair<unsigned int, unsigned int> newgoodpair (1,1);
241  pair<unsigned int, unsigned int> newbadpair (1,0);
242  //First, figure out if the module already exists in the map of maps
243  map< unsigned int, pair< unsigned int, unsigned int> >::iterator it = modCounter[layer].find(id);
244  if(!badquality) {
245  if(it == modCounter[layer].end()) {
246  if(badflag) modCounter[layer][id] = newbadpair;
247  else modCounter[layer][id] = newgoodpair;
248  }
249  else {
250  ((*it).second.first)++;
251  if(!badflag) ((*it).second.second)++;
252  }
253  //Have to do the decoding for which side to go on (ugh)
254  if(layer <= 10) {
255  if(!badflag) goodlayerfound[layer]++;
256  goodlayertotal[layer]++;
257  }
258  else if(layer > 10 && layer < 14) {
259  if( ((id>>13)&0x3) == 1) {
260  if(!badflag) goodlayerfound[layer]++;
261  goodlayertotal[layer]++;
262  }
263  else if( ((id>>13)&0x3) == 2) {
264  if(!badflag) goodlayerfound[layer+3]++;
265  goodlayertotal[layer+3]++;
266  }
267  }
268  else if(layer > 13 && layer <= 22) {
269  if( ((id>>18)&0x3) == 1) {
270  if(!badflag) goodlayerfound[layer+3]++;
271  goodlayertotal[layer+3]++;
272  }
273  else if( ((id>>18)&0x3) == 2) {
274  if(!badflag) goodlayerfound[layer+12]++;
275  goodlayertotal[layer+12]++;
276  }
277  }
278  }
279  //Do the one where we don't exclude bad modules!
280  if(layer <= 10) {
281  if(!badflag) alllayerfound[layer]++;
282  alllayertotal[layer]++;
283  }
284  else if(layer > 10 && layer < 14) {
285  if( ((id>>13)&0x3) == 1) {
286  if(!badflag) alllayerfound[layer]++;
287  alllayertotal[layer]++;
288  }
289  else if( ((id>>13)&0x3) == 2) {
290  if(!badflag) alllayerfound[layer+3]++;
291  alllayertotal[layer+3]++;
292  }
293  }
294  else if(layer > 13 && layer <= 22) {
295  if( ((id>>18)&0x3) == 1) {
296  if(!badflag) alllayerfound[layer+3]++;
297  alllayertotal[layer+3]++;
298  }
299  else if( ((id>>18)&0x3) == 2) {
300  if(!badflag) alllayerfound[layer+12]++;
301  alllayertotal[layer+12]++;
302  }
303  }
304  //At this point, both of our maps are loaded with the correct information
305  }
306  //CalibTreeFile->Close();
307  makeHotColdMaps();
308  makeTKMap();
309  makeSQLite();
310  totalStatistics();
311  makeSummary();
312 
314  //try to write out what's in the quality record
316  int NTkBadComponent[4]; //k: 0=BadModule, 1=BadFiber, 2=BadApv, 3=BadStrips
317  int NBadComponent[4][19][4];
318  //legend: NBadComponent[i][j][k]= SubSystem i, layer/disk/wheel j, BadModule/Fiber/Apv k
319  // i: 0=TIB, 1=TID, 2=TOB, 3=TEC
320  // k: 0=BadModule, 1=BadFiber, 2=BadApv, 3=BadStrips
321  std::stringstream ssV[4][19];
322 
323  for(int i=0;i<4;++i){
324  NTkBadComponent[i]=0;
325  for(int j=0;j<19;++j){
326  ssV[i][j].str("");
327  for(int k=0;k<4;++k)
328  NBadComponent[i][j][k]=0;
329  }
330  }
331 
332 
333  std::vector<SiStripQuality::BadComponent> BC = quality_->getBadComponentList();
334 
335  for (size_t i=0;i<BC.size();++i){
336 
337  //&&&&&&&&&&&&&
338  //Full Tk
339  //&&&&&&&&&&&&&
340 
341  if (BC[i].BadModule)
342  NTkBadComponent[0]++;
343  if (BC[i].BadFibers)
344  NTkBadComponent[1]+= ( (BC[i].BadFibers>>2)&0x1 )+ ( (BC[i].BadFibers>>1)&0x1 ) + ( (BC[i].BadFibers)&0x1 );
345  if (BC[i].BadApvs)
346  NTkBadComponent[2]+= ( (BC[i].BadApvs>>5)&0x1 )+ ( (BC[i].BadApvs>>4)&0x1 ) + ( (BC[i].BadApvs>>3)&0x1 ) +
347  ( (BC[i].BadApvs>>2)&0x1 )+ ( (BC[i].BadApvs>>1)&0x1 ) + ( (BC[i].BadApvs)&0x1 );
348 
349  //&&&&&&&&&&&&&&&&&
350  //Single SubSystem
351  //&&&&&&&&&&&&&&&&&
352 
353  int component;
354  SiStripDetId a(BC[i].detid);
355  if ( a.subdetId() == SiStripDetId::TIB ){
356  //&&&&&&&&&&&&&&&&&
357  //TIB
358  //&&&&&&&&&&&&&&&&&
359 
360  component=tTopo->tibLayer(BC[i].detid);
361  SetBadComponents(0, component, BC[i], ssV, NBadComponent);
362 
363  } else if ( a.subdetId() == SiStripDetId::TID ) {
364  //&&&&&&&&&&&&&&&&&
365  //TID
366  //&&&&&&&&&&&&&&&&&
367 
368  component=tTopo->tidSide(BC[i].detid)==2?tTopo->tidWheel(BC[i].detid):tTopo->tidWheel(BC[i].detid)+3;
369  SetBadComponents(1, component, BC[i], ssV, NBadComponent);
370 
371  } else if ( a.subdetId() == SiStripDetId::TOB ) {
372  //&&&&&&&&&&&&&&&&&
373  //TOB
374  //&&&&&&&&&&&&&&&&&
375 
376  component=tTopo->tobLayer(BC[i].detid);
377  SetBadComponents(2, component, BC[i], ssV, NBadComponent);
378 
379  } else if ( a.subdetId() == SiStripDetId::TEC ) {
380  //&&&&&&&&&&&&&&&&&
381  //TEC
382  //&&&&&&&&&&&&&&&&&
383 
384  component=tTopo->tecSide(BC[i].detid)==2?tTopo->tecWheel(BC[i].detid):tTopo->tecWheel(BC[i].detid)+9;
385  SetBadComponents(3, component, BC[i], ssV, NBadComponent);
386 
387  }
388  }
389 
390  //&&&&&&&&&&&&&&&&&&
391  // Single Strip Info
392  //&&&&&&&&&&&&&&&&&&
393  float percentage=0;
394 
397 
398  for (SiStripBadStrip::RegistryIterator rp=rbegin; rp != rend; ++rp) {
399  unsigned int detid=rp->detid;
400 
401  int subdet=-999; int component=-999;
402  SiStripDetId a(detid);
403  if ( a.subdetId() == 3 ){
404  subdet=0;
405  component=tTopo->tibLayer(detid);
406  } else if ( a.subdetId() == 4 ) {
407  subdet=1;
408  component=tTopo->tidSide(detid)==2?tTopo->tidWheel(detid):tTopo->tidWheel(detid)+3;
409  } else if ( a.subdetId() == 5 ) {
410  subdet=2;
411  component=tTopo->tobLayer(detid);
412  } else if ( a.subdetId() == 6 ) {
413  subdet=3;
414  component=tTopo->tecSide(detid)==2?tTopo->tecWheel(detid):tTopo->tecWheel(detid)+9;
415  }
416 
418 
419  percentage=0;
420  for(int it=0;it<sqrange.second-sqrange.first;it++){
421  unsigned int range=quality_->decode( *(sqrange.first+it) ).range;
422  NTkBadComponent[3]+=range;
423  NBadComponent[subdet][0][3]+=range;
424  NBadComponent[subdet][component][3]+=range;
425  percentage+=range;
426  }
427  if(percentage!=0)
428  percentage/=128.*reader->getNumberOfApvsAndStripLength(detid).first;
429  if(percentage>1)
430  edm::LogError("SiStripQualityStatistics") << "PROBLEM detid " << detid << " value " << percentage<< std::endl;
431  }
432  //&&&&&&&&&&&&&&&&&&
433  // printout
434  //&&&&&&&&&&&&&&&&&&
435 
436  cout << "\n-----------------\nNew IOV starting from run " << e.id().run() << " event " << e.id().event() << " lumiBlock " << e.luminosityBlock() << " time " << e.time().value() << "\n-----------------\n";
437  cout << "\n-----------------\nGlobal Info\n-----------------";
438  cout << "\nBadComponent \t Modules \tFibers \tApvs\tStrips\n----------------------------------------------------------------";
439  cout << "\nTracker:\t\t"<<NTkBadComponent[0]<<"\t"<<NTkBadComponent[1]<<"\t"<<NTkBadComponent[2]<<"\t"<<NTkBadComponent[3];
440  cout << endl;
441  cout << "\nTIB:\t\t\t"<<NBadComponent[0][0][0]<<"\t"<<NBadComponent[0][0][1]<<"\t"<<NBadComponent[0][0][2]<<"\t"<<NBadComponent[0][0][3];
442  cout << "\nTID:\t\t\t"<<NBadComponent[1][0][0]<<"\t"<<NBadComponent[1][0][1]<<"\t"<<NBadComponent[1][0][2]<<"\t"<<NBadComponent[1][0][3];
443  cout << "\nTOB:\t\t\t"<<NBadComponent[2][0][0]<<"\t"<<NBadComponent[2][0][1]<<"\t"<<NBadComponent[2][0][2]<<"\t"<<NBadComponent[2][0][3];
444  cout << "\nTEC:\t\t\t"<<NBadComponent[3][0][0]<<"\t"<<NBadComponent[3][0][1]<<"\t"<<NBadComponent[3][0][2]<<"\t"<<NBadComponent[3][0][3];
445  cout << "\n";
446 
447  for (int i=1;i<5;++i)
448  cout << "\nTIB Layer " << i << " :\t\t"<<NBadComponent[0][i][0]<<"\t"<<NBadComponent[0][i][1]<<"\t"<<NBadComponent[0][i][2]<<"\t"<<NBadComponent[0][i][3];
449  cout << "\n";
450  for (int i=1;i<4;++i)
451  cout << "\nTID+ Disk " << i << " :\t\t"<<NBadComponent[1][i][0]<<"\t"<<NBadComponent[1][i][1]<<"\t"<<NBadComponent[1][i][2]<<"\t"<<NBadComponent[1][i][3];
452  for (int i=4;i<7;++i)
453  cout << "\nTID- Disk " << i-3 << " :\t\t"<<NBadComponent[1][i][0]<<"\t"<<NBadComponent[1][i][1]<<"\t"<<NBadComponent[1][i][2]<<"\t"<<NBadComponent[1][i][3];
454  cout << "\n";
455  for (int i=1;i<7;++i)
456  cout << "\nTOB Layer " << i << " :\t\t"<<NBadComponent[2][i][0]<<"\t"<<NBadComponent[2][i][1]<<"\t"<<NBadComponent[2][i][2]<<"\t"<<NBadComponent[2][i][3];
457  cout << "\n";
458  for (int i=1;i<10;++i)
459  cout << "\nTEC+ Disk " << i << " :\t\t"<<NBadComponent[3][i][0]<<"\t"<<NBadComponent[3][i][1]<<"\t"<<NBadComponent[3][i][2]<<"\t"<<NBadComponent[3][i][3];
460  for (int i=10;i<19;++i)
461  cout << "\nTEC- Disk " << i-9 << " :\t\t"<<NBadComponent[3][i][0]<<"\t"<<NBadComponent[3][i][1]<<"\t"<<NBadComponent[3][i][2]<<"\t"<<NBadComponent[3][i][3];
462  cout << "\n";
463 
464  cout << "\n----------------------------------------------------------------\n\t\t Detid \tModules Fibers Apvs\n----------------------------------------------------------------";
465  for (int i=1;i<5;++i)
466  cout << "\nTIB Layer " << i << " :" << ssV[0][i].str();
467  cout << "\n";
468  for (int i=1;i<4;++i)
469  cout << "\nTID+ Disk " << i << " :" << ssV[1][i].str();
470  for (int i=4;i<7;++i)
471  cout << "\nTID- Disk " << i-3 << " :" << ssV[1][i].str();
472  cout << "\n";
473  for (int i=1;i<7;++i)
474  cout << "\nTOB Layer " << i << " :" << ssV[2][i].str();
475  cout << "\n";
476  for (int i=1;i<10;++i)
477  cout << "\nTEC+ Disk " << i << " :" << ssV[3][i].str();
478  for (int i=10;i<19;++i)
479  cout << "\nTEC- Disk " << i-9 << " :" << ssV[3][i].str();
480 
481 }
unsigned short range
RunNumber_t run() const
Definition: EventID.h:39
EventNumber_t event() const
Definition: EventID.h:41
int i
Definition: DBlmapReader.cc:9
const std::vector< BadComponent > & getBadComponentList() const
unsigned int tibLayer(const DetId &id) const
const std::pair< unsigned short, double > getNumberOfApvsAndStripLength(uint32_t detId) const
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:63
unsigned int tidWheel(const DetId &id) const
void SetBadComponents(int i, int component, SiStripQuality::BadComponent &BC, std::stringstream ssV[4][19], int NBadComponent[4][19][4])
Registry::const_iterator RegistryIterator
SiStripDetInfoFileReader * reader
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:25
float float float z
RegistryIterator getRegistryVectorEnd() const
unsigned int tidSide(const DetId &id) const
int j
Definition: DBlmapReader.cc:9
#define end
Definition: vmac.h:37
map< unsigned int, pair< unsigned int, unsigned int > > modCounter[23]
unsigned int id
ContainerIterator getDataVectorBegin() const
Detector identifier class for the strip tracker.
Definition: SiStripDetId.h:17
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:86
RegistryIterator getRegistryVectorBegin() const
edm::EventID id() const
Definition: EventBase.h:60
double a
Definition: hdecay.h:121
std::pair< ContainerIterator, ContainerIterator > Range
tuple cout
Definition: gather_cfg.py:121
Definition: DDAxes.h:10
unsigned int tecWheel(const DetId &id) const
TimeValue_t value() const
Definition: Timestamp.h:56
edm::Timestamp time() const
Definition: EventBase.h:61
data decode(const unsigned int &value) const
unsigned int tobLayer(const DetId &id) const
unsigned int tecSide(const DetId &id) const
void SiStripHitEffFromCalibTree::algoBeginJob ( )
privatevirtual

Definition at line 154 of file SiStripHitEffFromCalibTree.cc.

154  {
155  //I have no idea what goes here
156  //fs->make<TTree>("HitEffHistos","Tree of the inefficient hit histograms");
157 }
void SiStripHitEffFromCalibTree::algoEndJob ( )
overrideprivatevirtual

Reimplemented from ConditionDBWriter< SiStripBadStrip >.

Definition at line 159 of file SiStripHitEffFromCalibTree.cc.

159  {
160  //Still have no idea what goes here
161 
162 }
float SiStripHitEffFromCalibTree::calcPhi ( float  x,
float  y 
)
private

Definition at line 841 of file SiStripHitEffFromCalibTree.cc.

References phi, and Pi.

Referenced by makeHotColdMaps().

841  {
842  float phi = 0;
843  float Pi = 3.14159;
844  if((x>=0)&&(y>=0)) phi = atan(y/x);
845  else if((x>=0)&&(y<=0)) phi = atan(y/x) + 2*Pi;
846  else if((x<=0)&&(y>=0)) phi = atan(y/x) + Pi;
847  else phi = atan(y/x) + Pi;
848  phi = phi*180.0/Pi;
849 
850  return phi;
851 }
const double Pi
Definition: DDAxes.h:10
Definition: DDAxes.h:10
SiStripBadStrip * SiStripHitEffFromCalibTree::getNewObject ( )
overrideprivatevirtual

Implements ConditionDBWriter< SiStripBadStrip >.

Definition at line 824 of file SiStripHitEffFromCalibTree.cc.

References SiStripBadStrip::getDataVectorBegin(), SiStripBadStrip::getRegistryVectorBegin(), SiStripBadStrip::getRegistryVectorEnd(), getGTfromDQMFile::obj, SiStripBadStrip::put(), and quality_.

824  {
825  //Need this for a Condition DB Writer
826  //Initialize a return variable
828 
831 
832  for(;rIter!=rIterEnd;++rIter){
833  SiStripBadStrip::Range range(quality_->getDataVectorBegin()+rIter->ibegin,quality_->getDataVectorBegin()+rIter->iend);
834  if ( ! obj->put(rIter->detid,range) )
835  edm::LogError("SiStripHitEffFromCalibTree")<<"[SiStripHitEffFromCalibTree::getNewObject] detid already exists"<<std::endl;
836  }
837 
838  return obj;
839 }
Registry::const_iterator RegistryIterator
RegistryIterator getRegistryVectorEnd() const
ContainerIterator getDataVectorBegin() const
RegistryIterator getRegistryVectorBegin() const
std::pair< ContainerIterator, ContainerIterator > Range
bool put(const uint32_t &detID, const InputVector &vect)
void SiStripHitEffFromCalibTree::makeHotColdMaps ( )
private

Definition at line 483 of file SiStripHitEffFromCalibTree.cc.

References begin, calcPhi(), gather_cfg::cout, fs, hits, HotColdMaps, getDQMSummary::iter, TFileService::make(), and phi.

Referenced by algoAnalyze().

483  {
484  cout << "Entering hot cold map generation!\n";
485  TStyle* gStyle = new TStyle("gStyle","myStyle");
486  gStyle->cd();
487  gStyle->SetPalette(1);
488  gStyle->SetCanvasColor(kWhite);
489  gStyle->SetOptStat(0);
490  //Here we make the hot/cold color maps that we love so very much
491  //Already have access to the data as a private variable
492  //Create all of the histograms in the TFileService
493  TH2F *temph2;
494  for(Long_t maplayer = 1; maplayer <=22; maplayer++) {
495  //Initialize all of the histograms
496  if(maplayer > 0 && maplayer <= 4) {
497  //We are in the TIB
498  temph2 = fs->make<TH2F>(Form("%s%i","TIB",(int)(maplayer)),"TIB",100,-1,361,100,-100,100);
499  temph2->GetXaxis()->SetTitle("Phi");
500  temph2->GetXaxis()->SetBinLabel(1,TString("360"));
501  temph2->GetXaxis()->SetBinLabel(50,TString("180"));
502  temph2->GetXaxis()->SetBinLabel(100,TString("0"));
503  temph2->GetYaxis()->SetTitle("Global Z");
504  temph2->SetOption("colz");
505  HotColdMaps.push_back(temph2);
506  }
507  else if(maplayer > 4 && maplayer <= 10) {
508  //We are in the TOB
509  temph2 = fs->make<TH2F>(Form("%s%i","TOB",(int)(maplayer-4)),"TOB",100,-1,361,100,-120,120);
510  temph2->GetXaxis()->SetTitle("Phi");
511  temph2->GetXaxis()->SetBinLabel(1,TString("360"));
512  temph2->GetXaxis()->SetBinLabel(50,TString("180"));
513  temph2->GetXaxis()->SetBinLabel(100,TString("0"));
514  temph2->GetYaxis()->SetTitle("Global Z");
515  temph2->SetOption("colz");
516  HotColdMaps.push_back(temph2);
517  }
518  else if(maplayer > 10 && maplayer <= 13) {
519  //We are in the TID
520  //Split by +/-
521  temph2 = fs->make<TH2F>(Form("%s%i","TID-",(int)(maplayer-10)),"TID-",100,-100,100,100,-100,100);
522  temph2->GetXaxis()->SetTitle("Global Y");
523  temph2->GetXaxis()->SetBinLabel(1,TString("+Y"));
524  temph2->GetXaxis()->SetBinLabel(50,TString("0"));
525  temph2->GetXaxis()->SetBinLabel(100,TString("-Y"));
526  temph2->GetYaxis()->SetTitle("Global X");
527  temph2->GetYaxis()->SetBinLabel(1,TString("-X"));
528  temph2->GetYaxis()->SetBinLabel(50,TString("0"));
529  temph2->GetYaxis()->SetBinLabel(100,TString("+X"));
530  temph2->SetOption("colz");
531  HotColdMaps.push_back(temph2);
532  temph2 = fs->make<TH2F>(Form("%s%i","TID+",(int)(maplayer-10)),"TID+",100,-100,100,100,-100,100);
533  temph2->GetXaxis()->SetTitle("Global Y");
534  temph2->GetXaxis()->SetBinLabel(1,TString("+Y"));
535  temph2->GetXaxis()->SetBinLabel(50,TString("0"));
536  temph2->GetXaxis()->SetBinLabel(100,TString("-Y"));
537  temph2->GetYaxis()->SetTitle("Global X");
538  temph2->GetYaxis()->SetBinLabel(1,TString("-X"));
539  temph2->GetYaxis()->SetBinLabel(50,TString("0"));
540  temph2->GetYaxis()->SetBinLabel(100,TString("+X"));
541  temph2->SetOption("colz");
542  HotColdMaps.push_back(temph2);
543  }
544  else if(maplayer > 13) {
545  //We are in the TEC
546  //Split by +/-
547  temph2 = fs->make<TH2F>(Form("%s%i","TEC-",(int)(maplayer-13)),"TEC-",100,-120,120,100,-120,120);
548  temph2->GetXaxis()->SetTitle("Global Y");
549  temph2->GetXaxis()->SetBinLabel(1,TString("+Y"));
550  temph2->GetXaxis()->SetBinLabel(50,TString("0"));
551  temph2->GetXaxis()->SetBinLabel(100,TString("-Y"));
552  temph2->GetYaxis()->SetTitle("Global X");
553  temph2->GetYaxis()->SetBinLabel(1,TString("-X"));
554  temph2->GetYaxis()->SetBinLabel(50,TString("0"));
555  temph2->GetYaxis()->SetBinLabel(100,TString("+X"));
556  temph2->SetOption("colz");
557  HotColdMaps.push_back(temph2);
558  temph2 = fs->make<TH2F>(Form("%s%i","TEC+",(int)(maplayer-13)),"TEC+",100,-120,120,100,-120,120);
559  temph2->GetXaxis()->SetTitle("Global Y");
560  temph2->GetXaxis()->SetBinLabel(1,TString("+Y"));
561  temph2->GetXaxis()->SetBinLabel(50,TString("0"));
562  temph2->GetXaxis()->SetBinLabel(100,TString("-Y"));
563  temph2->GetYaxis()->SetTitle("Global X");
564  temph2->GetYaxis()->SetBinLabel(1,TString("-X"));
565  temph2->GetYaxis()->SetBinLabel(50,TString("0"));
566  temph2->GetYaxis()->SetBinLabel(100,TString("+X"));
567  temph2->SetOption("colz");
568  HotColdMaps.push_back(temph2);
569  }
570  }
571  for(Long_t mylayer = 1; mylayer <= 22; mylayer++) {
572  //Determine what kind of plot we want to write out
573  //Loop through the entirety of each layer
574  //Create an array of the histograms
575  vector<hit>::const_iterator iter;
576  for(iter = hits[mylayer].begin(); iter != hits[mylayer].end(); iter++) {
577  //Looping over the particular layer
578  //Fill by 360-x to get the proper location to compare with TKMaps of phi
579  //Also global xy is messed up
580  if(mylayer > 0 && mylayer <= 4) {
581  //We are in the TIB
582  float phi = calcPhi(iter->x, iter->y);
583  HotColdMaps[mylayer - 1]->Fill(360.-phi,iter->z,1.);
584  }
585  else if(mylayer > 4 && mylayer <= 10) {
586  //We are in the TOB
587  float phi = calcPhi(iter->x,iter->y);
588  HotColdMaps[mylayer - 1]->Fill(360.-phi,iter->z,1.);
589  }
590  else if(mylayer > 10 && mylayer <= 13) {
591  //We are in the TID
592  //There are 2 different maps here
593  int side = (((iter->id)>>13) & 0x3);
594  if(side == 1) HotColdMaps[(mylayer - 1) + (mylayer - 11)]->Fill(-iter->y,iter->x,1.);
595  else if(side == 2) HotColdMaps[(mylayer - 1) + (mylayer - 10)]->Fill(-iter->y,iter->x,1.);
596  //if(side == 1) HotColdMaps[(mylayer - 1) + (mylayer - 11)]->Fill(iter->x,iter->y,1.);
597  //else if(side == 2) HotColdMaps[(mylayer - 1) + (mylayer - 10)]->Fill(iter->x,iter->y,1.);
598  }
599  else if(mylayer > 13) {
600  //We are in the TEC
601  //There are 2 different maps here
602  int side = (((iter->id)>>18) & 0x3);
603  if(side == 1) HotColdMaps[(mylayer + 2) + (mylayer - 14)]->Fill(-iter->y,iter->x,1.);
604  else if(side == 2) HotColdMaps[(mylayer + 2) + (mylayer - 13)]->Fill(-iter->y,iter->x,1.);
605  //if(side == 1) HotColdMaps[(mylayer + 2) + (mylayer - 14)]->Fill(iter->x,iter->y,1.);
606  //else if(side == 2) HotColdMaps[(mylayer + 2) + (mylayer - 13)]->Fill(iter->x,iter->y,1.);
607  }
608  }
609  }
610  cout << "Finished HotCold Map Generation\n";
611 }
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
edm::Service< TFileService > fs
#define begin
Definition: vmac.h:30
tuple cout
Definition: gather_cfg.py:121
Definition: DDAxes.h:10
void SiStripHitEffFromCalibTree::makeSQLite ( )
private

Definition at line 657 of file SiStripHitEffFromCalibTree.cc.

References BadModules, SiStripQuality::compact(), gather_cfg::cout, SiStripBadStrip::encode(), SiStripQuality::fillBadComponents(), SiStripDetInfoFileReader::getNumberOfApvsAndStripLength(), SiStripBadStrip::put(), quality_, reader, and AlCaHarvesting_cff::SiStripQuality.

Referenced by algoAnalyze().

657  {
658  //Generate the SQLite file for use in the Database of the bad modules!
659  cout << "Entering SQLite file generation!\n";
660  std::vector<unsigned int> BadStripList;
661  unsigned short NStrips;
662  unsigned int id1;
663  SiStripQuality* pQuality = new SiStripQuality;
664  //This is the list of the bad strips, use to mask out entire APVs
665  //Now simply go through the bad hit list and mask out things that
666  //are bad!
667  map< unsigned int, double >::const_iterator it;
668  for(it = BadModules.begin(); it != BadModules.end(); it++) {
669  //We need to figure out how many strips are in this particular module
670  //To Mask correctly!
671  NStrips=reader->getNumberOfApvsAndStripLength((*it).first).first*128;
672  cout << "Number of strips module " << (*it).first << " is " << NStrips << endl;
673  BadStripList.push_back(pQuality->encode(0,NStrips,0));
674  //Now compact into a single bad module
675  id1=(unsigned int)(*it).first;
676  cout << "ID1 shoudl match list of modules above " << id1 << endl;
677  quality_->compact(id1,BadStripList);
678  SiStripQuality::Range range(BadStripList.begin(),BadStripList.end());
679  quality_->put(id1,range);
680  BadStripList.clear();
681  }
682  //Fill all the bad components now
684 }
const std::pair< unsigned short, double > getNumberOfApvsAndStripLength(uint32_t detId) const
SiStripDetInfoFileReader * reader
void compact(unsigned int &, std::vector< unsigned int > &)
void fillBadComponents()
std::pair< ContainerIterator, ContainerIterator > Range
tuple cout
Definition: gather_cfg.py:121
map< unsigned int, double > BadModules
bool put(const uint32_t &detID, const InputVector &vect)
unsigned int encode(const unsigned short &first, const unsigned short &NconsecutiveBadStrips, const unsigned short &flag=0)
void SiStripHitEffFromCalibTree::makeSummary ( )
private

Definition at line 700 of file SiStripHitEffFromCalibTree.cc.

References cond::ecalcond::all, alllayerfound, alllayertotal, gather_cfg::cout, newFWLiteAna::found, fs, goodlayerfound, goodlayertotal, i, j, relval_steps::k, diffTwoXMLs::label, create_public_lumi_plots::leg, and TFileService::make().

Referenced by algoAnalyze().

700  {
701  //setTDRStyle();
702 
703  int nLayers = 34;
704 
705  TH1F *found = fs->make<TH1F>("found","found",nLayers+1,0,nLayers+1);
706  TH1F *all = fs->make<TH1F>("all","all",nLayers+1,0,nLayers+1);
707  TH1F *found2 = fs->make<TH1F>("found2","found2",nLayers+1,0,nLayers+1);
708  TH1F *all2 = fs->make<TH1F>("all2","all2",nLayers+1,0,nLayers+1);
709  // first bin only to keep real data off the y axis so set to -1
710  found->SetBinContent(0,-1);
711  all->SetBinContent(0,1);
712 
713  TCanvas *c7 =new TCanvas("c7"," test ",10,10,800,600);
714  c7->SetFillColor(0);
715  c7->SetGrid();
716 
717  for (Long_t i=1; i< nLayers+1; ++i) {
718  if (i==10) i++;
719  if (i==25) i++;
720  if (i==34) break;
721 
722  cout << "Fill only good modules layer " << i << ": S = " << goodlayerfound[i] << " B = " << goodlayertotal[i] << endl;
723  if (goodlayertotal[i] > 5) {
724  found->SetBinContent(i,goodlayerfound[i]);
725  all->SetBinContent(i,goodlayertotal[i]);
726  } else {
727  found->SetBinContent(i,0);
728  all->SetBinContent(i,10);
729  }
730 
731  cout << "Filling all modules layer " << i << ": S = " << alllayerfound[i] << " B = " << alllayertotal[i] << endl;
732  if (alllayertotal[i] > 5) {
733  found2->SetBinContent(i,alllayerfound[i]);
734  all2->SetBinContent(i,alllayertotal[i]);
735  } else {
736  found2->SetBinContent(i,0);
737  all2->SetBinContent(i,10);
738  }
739 
740  }
741 
742  found->Sumw2();
743  all->Sumw2();
744 
745  found2->Sumw2();
746  all2->Sumw2();
747 
748  TGraphAsymmErrors *gr = new TGraphAsymmErrors(nLayers+1);
749  gr->BayesDivide(found,all);
750 
751  TGraphAsymmErrors *gr2 = new TGraphAsymmErrors(nLayers+1);
752  gr2->BayesDivide(found2,all2);
753 
754  for(int j = 0; j<nLayers+1; j++){
755  gr->SetPointError(j, 0., 0., gr->GetErrorYlow(j),gr->GetErrorYhigh(j) );
756  gr2->SetPointError(j, 0., 0., gr2->GetErrorYlow(j),gr2->GetErrorYhigh(j) );
757  }
758 
759  gr->GetXaxis()->SetLimits(0,nLayers);
760  gr->SetMarkerColor(2);
761  gr->SetMarkerSize(1.2);
762  gr->SetLineColor(2);
763  gr->SetLineWidth(4);
764  gr->SetMarkerStyle(20);
765  gr->SetMinimum(0.90);
766  gr->SetMaximum(1.001);
767  gr->GetYaxis()->SetTitle("Efficiency");
768 
769  gr2->GetXaxis()->SetLimits(0,nLayers);
770  gr2->SetMarkerColor(1);
771  gr2->SetMarkerSize(1.2);
772  gr2->SetLineColor(1);
773  gr2->SetLineWidth(4);
774  gr2->SetMarkerStyle(21);
775  gr2->SetMinimum(0.90);
776  gr2->SetMaximum(1.001);
777  gr2->GetYaxis()->SetTitle("Efficiency");
778  //cout << "starting labels" << endl;
779  //for ( int k=1; k<nLayers+1; k++) {
780  for ( Long_t k=1; k<nLayers+1; k++) {
781  if (k==10) k++;
782  if (k==25) k++;
783  if (k==34) break;
784  TString label;
785  if (k<5) {
786  label = TString("TIB ") + k;
787  } else if (k>4&&k<11) {
788  label = TString("TOB ")+(k-4);
789  } else if (k>10&&k<14) {
790  label = TString("TID- ")+(k-10);
791  } else if (k>13&&k<17) {
792  label = TString("TID+ ")+(k-13);
793  } else if (k>16&&k<26) {
794  label = TString("TEC- ")+(k-16);
795  } else if (k>25) {
796  label = TString("TEC+ ")+(k-25);
797  }
798  gr->GetXaxis()->SetBinLabel(((k+1)*100)/(nLayers)-2,label);
799  gr2->GetXaxis()->SetBinLabel(((k+1)*100)/(nLayers)-2,label);
800  }
801 
802  gr->Draw("AP");
803  gr->GetXaxis()->SetNdivisions(36);
804 
805  c7->cd();
806  TPad *overlay = new TPad("overlay","",0,0,1,1);
807  overlay->SetFillStyle(4000);
808  overlay->SetFillColor(0);
809  overlay->SetFrameFillStyle(4000);
810  overlay->Draw("same");
811  overlay->cd();
812  gr2->Draw("AP");
813 
814  TLegend *leg = new TLegend(0.70,0.20,0.92,0.39);
815  leg->AddEntry(gr,"Good Modules","p");
816  leg->AddEntry(gr2,"All Modules","p");
817  leg->SetTextSize(0.020);
818  leg->SetFillColor(0);
819  leg->Draw("same");
820 
821  c7->SaveAs("Summary.png");
822 }
int i
Definition: DBlmapReader.cc:9
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
edm::Service< TFileService > fs
int j
Definition: DBlmapReader.cc:9
tuple cout
Definition: gather_cfg.py:121
void SiStripHitEffFromCalibTree::makeTKMap ( )
private

Definition at line 613 of file SiStripHitEffFromCalibTree.cc.

References BadModules, begin, gather_cfg::cout, TrackerMap::fill(), TrackerMap::fillc(), plotBeamSpotDB::first, i, layerfound, layertotal, modCounter, nModsMin, TrackerMap::save(), edm::second(), threshold, tkmap, and tkmapbad.

Referenced by algoAnalyze().

613  {
614  cout << "Entering TKMap generation!\n";
615  tkmap = new TrackerMap(" Detector Inefficiency ");
616  tkmapbad = new TrackerMap(" Inefficient Modules ");
617  for(Long_t i = 1; i <= 22; i++) {
618  layertotal[i] = 0;
619  layerfound[i] = 0;
620  //Loop over every layer, extracting the information from
621  //the map of the efficiencies
622  map<unsigned int, pair<unsigned int, unsigned int> >::const_iterator ih;
623  for( ih = modCounter[i].begin(); ih != modCounter[i].end(); ih++) {
624  //We should be in the layer in question, and looping over all of the modules in said layer
625  //Generate the list for the TKmap, and the bad module list
626  double myeff = (double)(((*ih).second).second)/(((*ih).second).first);
627  if ( ((((*ih).second).first) >= nModsMin) && (myeff < threshold) ) {
628  //We have a bad module, put it in the list!
629  BadModules[(*ih).first] = myeff;
630  tkmapbad->fillc((*ih).first,255,0,0);
631  cout << "Layer " << i << " module " << (*ih).first << " efficiency " << myeff << " " << (((*ih).second).second) << "/" << (((*ih).second).first) << endl;
632  }
633  else {
634  //Fill the bad list with empty results for every module
635  tkmapbad->fillc((*ih).first,255,255,255);
636  }
637  if((((*ih).second).first) < 100 ) {
638  cout << "Module " << (*ih).first << " layer " << i << " is under occupancy at " << (((*ih).second).first) << endl;
639  }
640  //Put any module into the TKMap
641  //Should call module ID, and then 1- efficiency for that module
642  //if((*ih).first == 369137820) {
643  // cout << "Module 369137820 has 1-eff of " << 1.-myeff << endl;
644  //cout << "Which is " << ((*ih).second).second << "/" << ((*ih).second).first << endl;
645  //}
646  tkmap->fill((*ih).first,1.-myeff);
647  //Find the total number of hits in the module
648  layertotal[i] += int(((*ih).second).first);
649  layerfound[i] += int(((*ih).second).second);
650  }
651  }
652  tkmap->save(true, 0, 0, "SiStripHitEffTKMap.png");
653  tkmapbad->save(true, 0, 0, "SiStripHitEffTKMapBad.png");
654  cout << "Finished TKMap Generation\n";
655 }
int i
Definition: DBlmapReader.cc:9
U second(std::pair< T, U > const &p)
void save(bool print_total=true, float minval=0., float maxval=0., std::string s="svgmap.svg", int width=1500, int height=800)
Definition: TrackerMap.cc:698
map< unsigned int, pair< unsigned int, unsigned int > > modCounter[23]
void fillc(int idmod, int RGBcode)
Definition: TrackerMap.h:103
#define begin
Definition: vmac.h:30
tuple cout
Definition: gather_cfg.py:121
map< unsigned int, double > BadModules
void fill(int layer, int ring, int nmod, float x)
Definition: TrackerMap.cc:2776
void SiStripHitEffFromCalibTree::SetBadComponents ( int  i,
int  component,
SiStripQuality::BadComponent BC,
std::stringstream  ssV[4][19],
int  NBadComponent[4][19][4] 
)
private

Definition at line 853 of file SiStripHitEffFromCalibTree.cc.

References SiStripQuality::BadComponent::BadApvs, SiStripQuality::BadComponent::BadFibers, SiStripQuality::BadComponent::BadModule, SiStripQuality::BadComponent::detid, SiStripDetInfoFileReader::getNumberOfApvsAndStripLength(), i, and reader.

Referenced by algoAnalyze().

853  {
854 
855  int napv=reader->getNumberOfApvsAndStripLength(BC.detid).first;
856 
857  ssV[i][component] << "\n\t\t "
858  << BC.detid
859  << " \t " << BC.BadModule << " \t "
860  << ( (BC.BadFibers)&0x1 ) << " ";
861  if (napv==4)
862  ssV[i][component] << "x " <<( (BC.BadFibers>>1)&0x1 );
863 
864  if (napv==6)
865  ssV[i][component] << ( (BC.BadFibers>>1)&0x1 ) << " "
866  << ( (BC.BadFibers>>2)&0x1 );
867  ssV[i][component] << " \t "
868  << ( (BC.BadApvs)&0x1 ) << " "
869  << ( (BC.BadApvs>>1)&0x1 ) << " ";
870  if (napv==4)
871  ssV[i][component] << "x x " << ( (BC.BadApvs>>2)&0x1 ) << " "
872  << ( (BC.BadApvs>>3)&0x1 );
873  if (napv==6)
874  ssV[i][component] << ( (BC.BadApvs>>2)&0x1 ) << " "
875  << ( (BC.BadApvs>>3)&0x1 ) << " "
876  << ( (BC.BadApvs>>4)&0x1 ) << " "
877  << ( (BC.BadApvs>>5)&0x1 ) << " ";
878 
879  if (BC.BadApvs){
880  NBadComponent[i][0][2]+= ( (BC.BadApvs>>5)&0x1 )+ ( (BC.BadApvs>>4)&0x1 ) + ( (BC.BadApvs>>3)&0x1 ) +
881  ( (BC.BadApvs>>2)&0x1 )+ ( (BC.BadApvs>>1)&0x1 ) + ( (BC.BadApvs)&0x1 );
882  NBadComponent[i][component][2]+= ( (BC.BadApvs>>5)&0x1 )+ ( (BC.BadApvs>>4)&0x1 ) + ( (BC.BadApvs>>3)&0x1 ) +
883  ( (BC.BadApvs>>2)&0x1 )+ ( (BC.BadApvs>>1)&0x1 ) + ( (BC.BadApvs)&0x1 );
884  }
885  if (BC.BadFibers){
886  NBadComponent[i][0][1]+= ( (BC.BadFibers>>2)&0x1 )+ ( (BC.BadFibers>>1)&0x1 ) + ( (BC.BadFibers)&0x1 );
887  NBadComponent[i][component][1]+= ( (BC.BadFibers>>2)&0x1 )+ ( (BC.BadFibers>>1)&0x1 ) + ( (BC.BadFibers)&0x1 );
888  }
889  if (BC.BadModule){
890  NBadComponent[i][0][0]++;
891  NBadComponent[i][component][0]++;
892  }
893 }
int i
Definition: DBlmapReader.cc:9
const std::pair< unsigned short, double > getNumberOfApvsAndStripLength(uint32_t detId) const
SiStripDetInfoFileReader * reader
void SiStripHitEffFromCalibTree::totalStatistics ( )
private

Definition at line 686 of file SiStripHitEffFromCalibTree.cc.

References gather_cfg::cout, i, layerfound, and layertotal.

Referenced by algoAnalyze().

686  {
687  //Calculate the statistics by layer
688  int totalfound = 0;
689  int totaltotal = 0;
690  double layereff;
691  for(Long_t i=1; i<=22; i++) {
692  layereff = double(layerfound[i])/double(layertotal[i]);
693  cout << "Layer " << i << " has total efficiency " << layereff << " " << layerfound[i] << "/" << layertotal[i] << endl;
694  totalfound += layerfound[i];
695  totaltotal += layertotal[i];
696  }
697  cout << "The total efficiency is " << double(totalfound)/double(totaltotal) << endl;
698 }
int i
Definition: DBlmapReader.cc:9
tuple cout
Definition: gather_cfg.py:121

Member Data Documentation

unsigned int SiStripHitEffFromCalibTree::_bunchx
private

Definition at line 122 of file SiStripHitEffFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripHitEffFromCalibTree().

float SiStripHitEffFromCalibTree::_ResXSig
private

Definition at line 121 of file SiStripHitEffFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripHitEffFromCalibTree().

int SiStripHitEffFromCalibTree::alllayerfound[35]
private

Definition at line 133 of file SiStripHitEffFromCalibTree.cc.

Referenced by algoAnalyze(), and makeSummary().

int SiStripHitEffFromCalibTree::alllayertotal[35]
private

Definition at line 132 of file SiStripHitEffFromCalibTree.cc.

Referenced by algoAnalyze(), and makeSummary().

map< unsigned int, double > SiStripHitEffFromCalibTree::BadModules
private

Definition at line 134 of file SiStripHitEffFromCalibTree.cc.

Referenced by makeSQLite(), and makeTKMap().

TTree* SiStripHitEffFromCalibTree::CalibTree
private

Definition at line 116 of file SiStripHitEffFromCalibTree.cc.

Referenced by algoAnalyze().

TFile* SiStripHitEffFromCalibTree::CalibTreeFile
private

Definition at line 115 of file SiStripHitEffFromCalibTree.cc.

Referenced by algoAnalyze().

TString SiStripHitEffFromCalibTree::CalibTreeFilename
private

Definition at line 117 of file SiStripHitEffFromCalibTree.cc.

Referenced by algoAnalyze(), and SiStripHitEffFromCalibTree().

unsigned int SiStripHitEffFromCalibTree::doSummary
private

Definition at line 120 of file SiStripHitEffFromCalibTree.cc.

Referenced by SiStripHitEffFromCalibTree().

edm::FileInPath SiStripHitEffFromCalibTree::FileInPath_
private

Definition at line 111 of file SiStripHitEffFromCalibTree.cc.

Referenced by SiStripHitEffFromCalibTree().

edm::Service<TFileService> SiStripHitEffFromCalibTree::fs
private

Definition at line 109 of file SiStripHitEffFromCalibTree.cc.

Referenced by makeHotColdMaps(), and makeSummary().

int SiStripHitEffFromCalibTree::goodlayerfound[35]
private

Definition at line 131 of file SiStripHitEffFromCalibTree.cc.

Referenced by algoAnalyze(), and makeSummary().

int SiStripHitEffFromCalibTree::goodlayertotal[35]
private

Definition at line 130 of file SiStripHitEffFromCalibTree.cc.

Referenced by algoAnalyze(), and makeSummary().

vector<hit> SiStripHitEffFromCalibTree::hits[23]
private

Definition at line 123 of file SiStripHitEffFromCalibTree.cc.

Referenced by algoAnalyze(), and makeHotColdMaps().

vector<TH2F*> SiStripHitEffFromCalibTree::HotColdMaps
private

Definition at line 124 of file SiStripHitEffFromCalibTree.cc.

Referenced by makeHotColdMaps().

int SiStripHitEffFromCalibTree::layerfound[23]
private

Definition at line 128 of file SiStripHitEffFromCalibTree.cc.

Referenced by makeTKMap(), and totalStatistics().

int SiStripHitEffFromCalibTree::layertotal[23]
private

Definition at line 129 of file SiStripHitEffFromCalibTree.cc.

Referenced by makeTKMap(), and totalStatistics().

map< unsigned int, pair< unsigned int, unsigned int> > SiStripHitEffFromCalibTree::modCounter[23]
private

Definition at line 125 of file SiStripHitEffFromCalibTree.cc.

Referenced by algoAnalyze(), and makeTKMap().

unsigned int SiStripHitEffFromCalibTree::nModsMin
private
SiStripQuality* SiStripHitEffFromCalibTree::quality_
private
SiStripDetInfoFileReader* SiStripHitEffFromCalibTree::reader
private
float SiStripHitEffFromCalibTree::threshold
private
TrackerMap* SiStripHitEffFromCalibTree::tkmap
private

Definition at line 126 of file SiStripHitEffFromCalibTree.cc.

Referenced by makeTKMap().

TrackerMap* SiStripHitEffFromCalibTree::tkmapbad
private

Definition at line 127 of file SiStripHitEffFromCalibTree.cc.

Referenced by makeTKMap().