CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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) {
23  dbLabel = pset.getUntrackedParameter<string>("dbLabel", "");
24 }
25 
26 DTTTrigMatchRPhi::~DTTTrigMatchRPhi() {}
27 
28 void DTTTrigMatchRPhi::setES(const EventSetup& setup) {
29  // Get tTrig record from DB
30  ESHandle<DTTtrig> tTrig;
31  setup.get<DTTtrigRcd>().get(dbLabel,tTrig);
32  tTrigMap_ = &*tTrig;
33 }
34 
35 DTTTrigData DTTTrigMatchRPhi::correction(const DTSuperLayerId& slId) {
36 
37  float tTrigMean,tTrigSigma,kFactor;
38  int status = tTrigMap_->get(slId,tTrigMean,tTrigSigma,kFactor,DTTimeUnits::ns);
39  // RZ superlayers return the current value
40  if(slId.superLayer() == 2){
41  if(status != 0) throw cms::Exception("[DTTTrigMatchRPhi]") << "Could not find tTrig entry in DB for"
42  << slId << endl;
43  return DTTTrigData(tTrigMean,tTrigSigma,kFactor);
44  } else{
45  DTSuperLayerId partnerSLId(slId.chamberId(),(slId.superLayer() == 1)?3:1);
46  float tTrigMeanNew,tTrigSigmaNew,kFactorNew;
47  if(!status){ // Gets average of both SuperLayer's
48  if(!tTrigMap_->get(partnerSLId,tTrigMeanNew,tTrigSigmaNew,kFactorNew,DTTimeUnits::ns)){
49  tTrigMeanNew = (tTrigMean + tTrigMeanNew)/2.;
50 // tTrigSigmaNew = sqrt(tTrigSigmaNew*tTrigSigmaNew + tTrigSigma*tTrigSigma)/2.;
51  tTrigSigmaNew = (tTrigSigmaNew + tTrigSigma)/2.;
52 
53  kFactorNew = kFactor;
54  return DTTTrigData(tTrigMeanNew,tTrigSigmaNew,kFactorNew);
55  } else 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"
61  << slId << "\n" << partnerSLId << endl;
62  }
63  }
64  }
65 }
66 
67 } // namespace
T getUntrackedParameter(std::string const &, T const &) const
DTChamberId chamberId() const
Return the corresponding ChamberId.
int superLayer() const
Return the superlayer number.
const T & get() const
Definition: EventSetup.h:56
tuple status
Definition: ntuplemaker.py:245
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")