CMS 3D CMS Logo

DTTTrigMatchRPhi.cc
Go to the documentation of this file.
1 /*
2  * See header file for a description of this class.
3  *
4  * \author A. Vilela Pereira
5  */
6 
7 #include "DTTTrigMatchRPhi.h"
14 
15 #include <cmath>
16 
17 using namespace std;
18 using namespace edm;
19 
20 namespace dtCalibration {
21 
22  DTTTrigMatchRPhi::DTTTrigMatchRPhi(const ParameterSet& pset, edm::ConsumesCollector cc) {
23  ttrigToken_ =
24  cc.esConsumes<edm::Transition::BeginRun>(edm::ESInputTag("", pset.getUntrackedParameter<string>("dbLabel")));
25  }
26 
27  DTTTrigMatchRPhi::~DTTTrigMatchRPhi() {}
28 
29  void DTTTrigMatchRPhi::setES(const EventSetup& setup) {
30  // Get tTrig record from DB
31  ESHandle<DTTtrig> tTrig = setup.getHandle(ttrigToken_);
32  tTrigMap_ = &*tTrig;
33  }
34 
36  float tTrigMean, tTrigSigma, kFactor;
37  int status = tTrigMap_->get(slId, tTrigMean, tTrigSigma, kFactor, DTTimeUnits::ns);
38  // RZ superlayers return the current value
39  if (slId.superLayer() == 2) {
40  if (status != 0)
41  throw cms::Exception("[DTTTrigMatchRPhi]") << "Could not find tTrig entry in DB for" << slId << endl;
42  return DTTTrigData(tTrigMean, tTrigSigma, kFactor);
43  } else {
44  DTSuperLayerId partnerSLId(slId.chamberId(), (slId.superLayer() == 1) ? 3 : 1);
45  float tTrigMeanNew, tTrigSigmaNew, kFactorNew;
46  if (!status) { // Gets average of both SuperLayer's
47  if (!tTrigMap_->get(partnerSLId, tTrigMeanNew, tTrigSigmaNew, kFactorNew, DTTimeUnits::ns)) {
48  tTrigMeanNew = (tTrigMean + tTrigMeanNew) / 2.;
49  // tTrigSigmaNew = sqrt(tTrigSigmaNew*tTrigSigmaNew + tTrigSigma*tTrigSigma)/2.;
50  tTrigSigmaNew = (tTrigSigmaNew + tTrigSigma) / 2.;
51 
52  kFactorNew = kFactor;
53  return DTTTrigData(tTrigMeanNew, tTrigSigmaNew, kFactorNew);
54  } else
55  return DTTTrigData(tTrigMean, tTrigSigma, kFactor);
56  } else { // If there is no entry tries to find partner SL and retrieves its value
57  if (!tTrigMap_->get(partnerSLId, tTrigMeanNew, tTrigSigmaNew, kFactorNew, DTTimeUnits::ns))
58  return DTTTrigData(tTrigMeanNew, tTrigSigmaNew, kFactorNew);
59  else { // Both RPhi SL's not present in DB
60  throw cms::Exception("[DTTTrigMatchRPhi]") << "Could not find tTrig entry in DB for" << slId << "\n"
61  << partnerSLId << endl;
62  }
63  }
64  }
65  }
66 
67 } // namespace dtCalibration
int superLayer() const
Return the superlayer number.
DTChamberId chamberId() const
Return the corresponding ChamberId.
HLT enums.