CMS 3D CMS Logo

DTT0FillChamberFromDB.cc
Go to the documentation of this file.
1 /*
2  * See header file for a description of this class.
3  *
4  * $Date: 2012/03/21 13:48:46 $
5  * $Revision: 1.2 $
6  * \author A. Vilela Pereira
7  */
8 
14 
18 
19 #include <string>
20 #include <sstream>
21 
22 using namespace std;
23 using namespace edm;
24 
25 namespace dtCalibration {
26 
27 DTT0FillChamberFromDB::DTT0FillChamberFromDB(const ParameterSet& pset):
28  dbLabelRef_( pset.getParameter<string>("dbLabelRef") ),
29  chamberRef_( pset.getParameter<string>("chamberId") ) {
30 
31  //DTChamberId chosenChamberId;
32  if( chamberRef_ != "" && chamberRef_ != "None" ){
33  stringstream linestr;
34  int selWheel, selStation, selSector;
35  linestr << chamberRef_;
36  linestr >> selWheel >> selStation >> selSector;
37  chosenChamberId_ = DTChamberId(selWheel, selStation, selSector);
38  LogVerbatim("Calibration") << "[DTT0FillChamberFromDB] Chosen chamber: " << chosenChamberId_ << endl;
39  }
40  //FIXME: Check if chosen chamber is valid.
41 
42 }
43 
45 }
46 
48  // Get t0 record from DB
49  ESHandle<DTT0> t0H;
50  setup.get<DTT0Rcd>().get(t0H);
51  t0Map_ = &*t0H;
52  LogVerbatim("Calibration") << "[DTT0FillChamberFromDB] T0 version: " << t0H->version();
53 
54  // Get reference t0 DB
55  ESHandle<DTT0> t0RefH;
56  setup.get<DTT0Rcd>().get(dbLabelRef_,t0RefH);
57  t0MapRef_ = &*t0RefH;
58  LogVerbatim("Calibration") << "[DTT0FillChamberFromDB] Reference T0 version: " << t0RefH->version();
59 
60 }
61 
63  // If wire belongs to chosen chamber, use t0 value from reference DB
64  // Otherwise use value from default DB
65 
66  DTChamberId chamberId = wireId.layerId().superlayerId().chamberId();
67 
68  if( chamberRef_ != "" && chamberRef_ != "None" && chamberId == chosenChamberId_ ){
69  // Access reference DB
70  float t0MeanRef,t0RMSRef;
71  int statusRef = t0MapRef_->get(wireId,t0MeanRef,t0RMSRef,DTTimeUnits::counts);
72  if(!statusRef){
73  return DTT0Data(t0MeanRef,t0RMSRef);
74  } else{
75  //...
76  throw cms::Exception("[DTT0FillChamberFromDB]") << "Could not find t0 entry in reference DB for"
77  << wireId << endl;
78  }
79  } else{
80  // Access default DB
81  float t0Mean,t0RMS;
82  int status = t0Map_->get(wireId,t0Mean,t0RMS,DTTimeUnits::counts);
83  if(!status){
84  return DTT0Data(t0Mean,t0RMS);
85  } else{
86  //...
87  throw cms::Exception("[DTT0FillChamberFromDB]") << "Could not find t0 entry in DB for"
88  << wireId << endl;
89  }
90  }
91 }
92 
93 } // namespace
DTT0Data correction(const DTWireId &) override
DTChamberId chamberId() const
Return the corresponding ChamberId.
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:1
DTSuperLayerId superlayerId() const
Return the corresponding SuperLayerId.
Definition: DTLayerId.h:59
int get(int wheelId, int stationId, int sectorId, int slId, int layerId, int cellId, float &t0mean, float &t0rms, DTTimeUnits::type unit) const
Definition: DTT0.cc:67
const T & get() const
Definition: EventSetup.h:58
Definition: DTT0Rcd.h:9
DTLayerId layerId() const
Return the corresponding LayerId.
Definition: DTWireId.h:62
HLT enums.
const std::string & version() const
access version
Definition: DTT0.cc:118
void setES(const edm::EventSetup &setup) override