CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
DTtTrigDBValidation.cc
Go to the documentation of this file.
2 
3 // Framework
8 
12 
13 // Geometry
17 
18 // DataFormats
20 
21 // tTrig
24 
25 #include <stdio.h>
26 #include <sstream>
27 #include <math.h>
28 #include "TFile.h"
29 
30 using namespace edm;
31 using namespace std;
32 
34  metname("tTrigdbValidation"),
35  labelDBRef(pset.getParameter<string>("labelDBRef")),
36  labelDB(pset.getParameter<string>("labelDB")),
37  lowerLimit(pset.getUntrackedParameter<int>("lowerLimit",1)),
38  higherLimit(pset.getUntrackedParameter<int>("higherLimit",3)),
39  outputMEsInRootFile(pset.getUntrackedParameter<bool>("OutputMEsInRootFile",false)),
40  outputFileName(pset.getUntrackedParameter<string>("OutputFileName","tTrigDBMonitoring.root"))
41  {
42 
43  LogVerbatim(metname) << "[DTtTrigDBValidation] Constructor called!";
44 
45  // Get the DQM needed services
47  dbe->setCurrentFolder("DT/DTDBValidation");
48 }
49 
51 
53 
54  LogVerbatim(metname) << "[DTtTrigDBValidation] Parameters initialization";
55 
56  ESHandle<DTTtrig> tTrig_Ref;
57  setup.get<DTTtrigRcd>().get(labelDBRef, tTrig_Ref);
58  const DTTtrig* DTTtrigRefMap = &*tTrig_Ref;
59  LogVerbatim(metname) << "[DTtTrigDBValidation] reference Ttrig version: " << tTrig_Ref->version();
60 
61  ESHandle<DTTtrig> tTrig;
62  setup.get<DTTtrigRcd>().get(labelDB, tTrig);
63  const DTTtrig* DTTtrigMap = &*tTrig;
64  LogVerbatim(metname) << "[DTtTrigDBValidation] Ttrig to validate version: " << tTrig->version();
65 
66  //book&reset the summary histos
67  for(int wheel=-2; wheel<=2; wheel++){
68  bookHistos(wheel);
69  tTrigDiffWheel[wheel]->Reset();
70  }
71 
72  // Get the geometry
73  setup.get<MuonGeometryRecord>().get(dtGeom);
74 
75  // Loop over Ref DB entries
76  for(DTTtrig::const_iterator it = DTTtrigRefMap->begin();
77  it != DTTtrigRefMap->end(); ++it) {
78  DTSuperLayerId slId((*it).first.wheelId,
79  (*it).first.stationId,
80  (*it).first.sectorId,
81  (*it).first.slId);
82  float tTrigMean;
83  float tTrigRms;
84  float kFactor;
85  DTTtrigRefMap->get(slId, tTrigMean, tTrigRms, kFactor, DTTimeUnits::ns);
86  float tTrigCorr = tTrigMean + kFactor*tTrigRms;
87  LogTrace(metname)<< "Ref Superlayer: " << slId << "\n"
88  << " Ttrig mean (ns): " << tTrigMean
89  << " Ttrig rms (ns): " << tTrigRms
90  << " Ttrig k-Factor: " << kFactor
91  << " Ttrig value (ns): " << tTrigCorr;
92 
93  //tTrigRefMap[slId] = std::pair<float,float>(tTrigmean,tTrigrms);
94  tTrigRefMap[slId] = pair<float,float>(tTrigCorr,tTrigRms);
95  }
96 
97  // Loop over Ref DB entries
98  for(DTTtrig::const_iterator it = DTTtrigMap->begin();
99  it != DTTtrigMap->end(); ++it) {
100  DTSuperLayerId slId((*it).first.wheelId,
101  (*it).first.stationId,
102  (*it).first.sectorId,
103  (*it).first.slId);
104  float tTrigMean;
105  float tTrigRms;
106  float kFactor;
107  DTTtrigMap->get(slId, tTrigMean, tTrigRms, kFactor, DTTimeUnits::ns);
108  float tTrigCorr = tTrigMean + kFactor*tTrigRms;
109  LogTrace(metname)<< "Superlayer: " << slId << "\n"
110  << " Ttrig mean (ns): " << tTrigMean
111  << " Ttrig rms (ns): " << tTrigRms
112  << " Ttrig k-Factor: " << kFactor
113  << " Ttrig value (ns): " << tTrigCorr;
114 
115  //tTrigMap[slId] = std::pair<float,float>(tTrigmean,tTrigrms);
116  tTrigMap[slId] = pair<float,float>(tTrigCorr,tTrigRms);
117  }
118 
119  for(map<DTSuperLayerId, pair<float,float> >::const_iterator it = tTrigRefMap.begin();
120  it != tTrigRefMap.end(); ++it) {
121  if(tTrigMap.find((*it).first) == tTrigMap.end()) continue;
122 
123  // compute the difference
124  float difference = tTrigMap[(*it).first].first - (*it).second.first;
125 
126  //book histo
127  int wheel = (*it).first.chamberId().wheel();
128  int sector = (*it).first.chamberId().sector();
129  if(tTrigDiffHistos.find(make_pair(wheel,sector)) == tTrigDiffHistos.end()) bookHistos(wheel,sector);
130 
131  LogTrace(metname) << "Filling histos for super-layer: " << (*it).first << " difference: " << difference;
132 
133  // Fill the test histos
134  int entry = -1;
135  int station = (*it).first.chamberId().station();
136  if(station == 1) entry=0;
137  if(station == 2) entry=3;
138  if(station == 3) entry=6;
139  if(station == 4) entry=9;
140 
141  int slBin = entry + (*it).first.superLayer();
142  if(slBin == 12) slBin=11;
143 
144  tTrigDiffHistos[make_pair(wheel,sector)]->setBinContent(slBin, difference);
145  if(abs(difference)<lowerLimit){
146  tTrigDiffWheel[wheel]->setBinContent(slBin,sector,1);
147  }else if(abs(difference)<higherLimit){
148  tTrigDiffWheel[wheel]->setBinContent(slBin,sector,2);
149  }else{
150  tTrigDiffWheel[wheel]->setBinContent(slBin,sector,3);
151  }
152 
153 
154  } // Loop over the tTrig map reference
155 
156 }
157 
159 
161 
163  // write the histos on a file
165  }
166 }
167 
168 void DTtTrigDBValidation::bookHistos(int wheel, int sector) {
169 
170  LogTrace(metname) << " Booking histos for Wheel, Sector: " << wheel << ", " << sector;
171 
172  // Compose the chamber name
173  stringstream str_wheel; str_wheel << wheel;
174  stringstream str_sector; str_sector << sector;
175 
176  string lHistoName = "_W" + str_wheel.str() + "_Sec" + str_sector.str();
177 
178  dbe->setCurrentFolder("DT/tTrigValidation/Wheel" + str_wheel.str());
179 
180  // Create the monitor elements
181  MonitorElement * hDifference;
182  hDifference = dbe->book1D("htTrigDifference"+lHistoName, "difference between the two tTrig values",11,0,11);
183 
184  pair<int,int> mypair(wheel,sector);
185  tTrigDiffHistos[mypair] = hDifference;
186 
187  (tTrigDiffHistos[mypair])->setBinLabel(1,"MB1_SL1",1);
188  (tTrigDiffHistos[mypair])->setBinLabel(2,"MB1_SL2",1);
189  (tTrigDiffHistos[mypair])->setBinLabel(3,"MB1_SL3",1);
190  (tTrigDiffHistos[mypair])->setBinLabel(4,"MB2_SL1",1);
191  (tTrigDiffHistos[mypair])->setBinLabel(5,"MB2_SL2",1);
192  (tTrigDiffHistos[mypair])->setBinLabel(6,"MB2_SL3",1);
193  (tTrigDiffHistos[mypair])->setBinLabel(7,"MB3_SL1",1);
194  (tTrigDiffHistos[mypair])->setBinLabel(8,"MB3_SL2",1);
195  (tTrigDiffHistos[mypair])->setBinLabel(9,"MB3_SL3",1);
196  (tTrigDiffHistos[mypair])->setBinLabel(10,"MB4_SL1",1);
197  (tTrigDiffHistos[mypair])->setBinLabel(11,"MB4_SL3",1);
198 }
199 
200 // Book the summary histos
202 
203  stringstream wh; wh << wheel;
204 
205  dbe->setCurrentFolder("DT/tTrigValidation/Wheel" + wh.str());
206  tTrigDiffWheel[wheel] = dbe->book2D("htTrigDifference_W"+wh.str(), "W"+wh.str()+": summary of tTrig differences",11,1,12,14,1,15);
207  tTrigDiffWheel[wheel]->setBinLabel(1,"MB1_SL1",1);
208  tTrigDiffWheel[wheel]->setBinLabel(2,"MB1_SL2",1);
209  tTrigDiffWheel[wheel]->setBinLabel(3,"MB1_SL3",1);
210  tTrigDiffWheel[wheel]->setBinLabel(4,"MB2_SL1",1);
211  tTrigDiffWheel[wheel]->setBinLabel(5,"MB2_SL2",1);
212  tTrigDiffWheel[wheel]->setBinLabel(6,"MB2_SL3",1);
213  tTrigDiffWheel[wheel]->setBinLabel(7,"MB3_SL1",1);
214  tTrigDiffWheel[wheel]->setBinLabel(8,"MB3_SL2",1);
215  tTrigDiffWheel[wheel]->setBinLabel(9,"MB3_SL3",1);
216  tTrigDiffWheel[wheel]->setBinLabel(10,"MB4_SL1",1);
217  tTrigDiffWheel[wheel]->setBinLabel(11,"MB4_SL3",1);
218 
219 
220 }
221 
222 
224  return (int) (bin /3.1)+1;
225 }
226 
228  int ret = bin%3;
229  if(ret == 0 || bin == 11) ret = 3;
230 
231  return ret;
232 }
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:514
void endRun(edm::Run const &, edm::EventSetup const &)
const std::string metname
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE")
Definition: DQMStore.cc:1898
#define abs(x)
Definition: mlp_lapack.h:159
int slFromBin(int bin) const
std::vector< std::pair< DTTtrigId, DTTtrigData > >::const_iterator const_iterator
Access methods to data.
Definition: DTTtrig.h:176
std::map< DTSuperLayerId, std::pair< float, float > > tTrigMap
std::pair< std::string, MonitorElement * > entry
Definition: ME_MAP.h:8
edm::ESHandle< DTGeometry > dtGeom
int stationFromBin(int bin) const
#define LogTrace(id)
virtual ~DTtTrigDBValidation()
Destructor.
DTtTrigDBValidation(const edm::ParameterSet &pset)
Constructor.
int get(int wheelId, int stationId, int sectorId, int slId, float &tTrig, float &tTrms, float &kFact, DTTimeUnits::type unit) const
get content
Definition: DTTtrig.cc:87
void beginRun(edm::Run const &, edm::EventSetup const &)
Operations.
const T & get() const
Definition: EventSetup.h:55
std::map< int, MonitorElement * > tTrigDiffWheel
const_iterator begin() const
Definition: DTTtrig.cc:377
std::map< std::pair< int, int >, MonitorElement * > tTrigDiffHistos
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:642
const_iterator end() const
Definition: DTTtrig.cc:382
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:232
Definition: Run.h:32
std::map< DTSuperLayerId, std::pair< float, float > > tTrigRefMap