CMS 3D CMS Logo

DTT0ChamberReferenceCorrection.cc
Go to the documentation of this file.
1 /*
2  * See header file for a description of this class.
3  *
4  */
5 
11 
15 
16 #include <string>
17 #include <sstream>
18 
19 using namespace std;
20 using namespace edm;
21 
22 namespace dtCalibration {
23 
24 DTT0ChamberReferenceCorrection::DTT0ChamberReferenceCorrection(const ParameterSet& pset):
25  calibChamber_( pset.getParameter<string>("calibChamber") ) {
26 
27  //DTChamberId chosenChamberId;
28  if( calibChamber_ != "" && calibChamber_ != "None" && calibChamber_ != "All" ){
29  stringstream linestr;
30  int selWheel, selStation, selSector;
31  linestr << calibChamber_;
32  linestr >> selWheel >> selStation >> selSector;
33  chosenChamberId_ = DTChamberId(selWheel, selStation, selSector);
34  LogVerbatim("Calibration") << "[DTT0ChamberReferenceCorrection] Chosen chamber: " << chosenChamberId_ << endl;
35  }
36  //FIXME: Check if chosen chamber is valid.
37 
38 }
39 
41 }
42 
44  // Get t0 record from DB
45  ESHandle<DTT0> t0H;
46  setup.get<DTT0Rcd>().get(t0H);
47  t0Map_ = &*t0H;
48  LogVerbatim("Calibration") << "[DTT0ChamberReferenceCorrection] T0 version: " << t0H->version();
49 }
50 
52  // Compute for selected chamber (or All) correction using as reference chamber mean
53 
54  DTChamberId chamberId = wireId.layerId().superlayerId().chamberId();
55 
56  if( calibChamber_ == "" || calibChamber_ == "None" ) return defaultT0(wireId);
57  if( calibChamber_ != "All" && chamberId != chosenChamberId_ ) return defaultT0(wireId);
58 
59  // Access DB
60  float t0Mean,t0RMS;
61  int status = t0Map_->get(wireId,t0Mean,t0RMS,DTTimeUnits::counts);
62  if(status != 0)
63  throw cms::Exception("[DTT0ChamberReferenceCorrection]") << "Could not find t0 entry in DB for"
64  << wireId << endl;
65  /*
66  Leaving just the structure for future implementation
67  ...
68  ...
69  */
70  return DTT0Data(t0Mean,t0RMS);
71 }
72 
74  // Access default DB
75  float t0Mean,t0RMS;
76  int status = t0Map_->get(wireId,t0Mean,t0RMS,DTTimeUnits::counts);
77  if(!status){
78  return DTT0Data(t0Mean,t0RMS);
79  } else{
80  //...
81  throw cms::Exception("[DTT0ChamberReferenceCorrection]") << "Could not find t0 entry in DB for"
82  << wireId << endl;
83  }
84 }
85 
86 } // namespace
DTChamberId chamberId() const
Return the corresponding ChamberId.
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:2
void setES(const edm::EventSetup &setup) override
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
Definition: DTT0Rcd.h:9
DTLayerId layerId() const
Return the corresponding LayerId.
Definition: DTWireId.h:62
HLT enums.
T get() const
Definition: EventSetup.h:71
const std::string & version() const
access version
Definition: DTT0.cc:118