CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
EcalUncalibRecHitWorkerFixedAlphaBetaFit.cc
Go to the documentation of this file.
1 
9 
14 
16 
19 
22 
26 
29 
30 #include <iostream>
31 #include <cmath>
32 #include <fstream>
33 
37  alphaEB_ = ps.getParameter<double>("alphaEB");
38  betaEB_ = ps.getParameter<double>("betaEB");
39  alphaEE_ = ps.getParameter<double>("alphaEE");
40  betaEE_ = ps.getParameter<double>("betaEE");
41 
42  alphabetaFilename_ = ps.getUntrackedParameter<std::string>("AlphaBetaFilename");
43  useAlphaBetaArray_ = setAlphaBeta(); // set crystalwise values of alpha and beta
44  if (!useAlphaBetaArray_) {
45  edm::LogInfo("EcalUncalibRecHitError") << " No alfa-beta file found. Using the deafult values.";
46  }
47 
48  algoEB_.SetMinAmpl(ps.getParameter<double>("MinAmplBarrel"));
49  algoEE_.SetMinAmpl(ps.getParameter<double>("MinAmplEndcap"));
50 
51  bool dyn_pede = ps.getParameter<bool>("UseDynamicPedestal");
52  algoEB_.SetDynamicPedestal(dyn_pede);
53  algoEE_.SetDynamicPedestal(dyn_pede);
54 }
55 
57  // Gain Ratios
58  LogDebug("EcalUncalibRecHitDebug") << "fetching gainRatios....";
60  LogDebug("EcalUncalibRecHitDebug") << "done.";
61 
62  // fetch the pedestals from the cond DB via EventSetup
63  LogDebug("EcalUncalibRecHitDebug") << "fetching pedestals....";
65  LogDebug("EcalUncalibRecHitDebug") << "done.";
66 }
67 
68 //Sets the alphaBetaValues_ vectors by the values provided in alphabetaFilename_
70  std::ifstream file(alphabetaFilename_.c_str());
71  if (!file.is_open())
72  return false;
73 
74  alphaBetaValues_.resize(36);
75 
76  char buffer[100];
77  int sm, cry, ret;
78  float a, b;
79  std::pair<double, double> p(-1, -1);
80 
81  while (!file.getline(buffer, 100).eof()) {
82  ret = sscanf(buffer, "%d %d %f %f", &sm, &cry, &a, &b);
83  if ((ret != 4) || (sm <= 0) || (sm > 36) || (cry <= 0) || (cry > 1700)) {
84  // send warning
85  continue;
86  }
87 
88  if (alphaBetaValues_[sm - 1].empty()) {
89  alphaBetaValues_[sm - 1].resize(1700, p);
90  }
91  alphaBetaValues_[sm - 1][cry - 1].first = a;
92  alphaBetaValues_[sm - 1][cry - 1].second = b;
93  }
94 
95  file.close();
96  return true;
97 }
98 
102  const EcalGainRatioMap& gainMap = pRatio.product()->getMap(); // map of gain ratios
103  EcalGainRatioMap::const_iterator gainIter; // gain iterator
104  EcalMGPAGainRatio aGain; // gain object for a single xtal
105 
106  const EcalPedestalsMap& pedMap = pedHandle.product()->getMap(); // map of pedestals
107  EcalPedestalsMapIterator pedIter; // pedestal iterator
108  EcalPedestals::Item aped; // pedestal object for a single xtal
109 
110  DetId detid(itdg->id());
111 
112  // find pedestals for this channel
113  //LogDebug("EcalUncalibRecHitDebug") << "looking up pedestal for crystal: " << itdg->id();
114  pedIter = pedMap.find(itdg->id());
115  if (pedIter != pedMap.end()) {
116  aped = (*pedIter);
117  } else {
118  edm::LogError("EcalUncalibRecHitWorkerFixedAlphaBetaFit") << "error!! could not find pedestals for channel: ";
119  if (detid.subdetId() == EcalBarrel) {
120  edm::LogError("EcalUncalibRecHitWorkerFixedAlphaBetaFit") << EBDetId(detid);
121  } else {
122  edm::LogError("EcalUncalibRecHitWorkerFixedAlphaBetaFit") << EEDetId(detid);
123  }
124  edm::LogError("EcalUncalibRecHitWorkerFixedAlphaBetaFit") << "\n no uncalib rechit will be made for this digi!";
125  return false;
126  }
127  double pedVec[3];
128  pedVec[0] = aped.mean_x12;
129  pedVec[1] = aped.mean_x6;
130  pedVec[2] = aped.mean_x1;
131 
132  // find gain ratios
133  //LogDebug("EcalUncalibRecHitDebug") << "looking up gainRatios for crystal: " << EBDetId(itdg->id()) ; // FIXME!!!!!!!!
134  gainIter = gainMap.find(itdg->id());
135  if (gainIter != gainMap.end()) {
136  aGain = (*gainIter);
137  } else {
138  edm::LogError("EcalUncalibRecHitWorkerFixedAlphaBetaFit") << "error!! could not find gain ratios for channel: ";
139  if (detid.subdetId() == EcalBarrel) {
140  edm::LogError("EcalUncalibRecHitWorkerFixedAlphaBetaFit") << EBDetId(detid);
141  } else {
142  edm::LogError("EcalUncalibRecHitWorkerFixedAlphaBetaFit") << EEDetId(detid);
143  }
144  edm::LogError("EcalUncalibRecHitWorkerFixedAlphaBetaFit") << "\n no uncalib rechit will be made for this digi!";
145  return false;
146  }
147  double gainRatios[3];
148  gainRatios[0] = 1.;
149  gainRatios[1] = aGain.gain12Over6();
150  gainRatios[2] = aGain.gain6Over1() * aGain.gain12Over6();
151 
152  if (detid.subdetId() == EcalBarrel) {
153  // Define Alpha and Beta either by stored values or by default universal values
154  EBDetId ebDetId(detid);
155  double a, b;
156  if (useAlphaBetaArray_) {
157  if (!alphaBetaValues_[ebDetId.ism() - 1].empty()) {
158  a = alphaBetaValues_[ebDetId.ism() - 1][ebDetId.ic() - 1].first;
159  b = alphaBetaValues_[ebDetId.ism() - 1][ebDetId.ic() - 1].second;
160  if ((a == -1) && (b == -1)) {
161  a = alphaEB_;
162  b = betaEB_;
163  }
164  } else {
165  a = alphaEB_;
166  b = betaEB_;
167  }
168  } else {
169  a = alphaEB_;
170  b = betaEB_;
171  }
173  result.push_back(algoEB_.makeRecHit(*itdg, pedVec, gainRatios, nullptr, nullptr));
174  } else {
175  //FIX ME load in a and b from a file
177  result.push_back(algoEE_.makeRecHit(*itdg, pedVec, gainRatios, nullptr, nullptr));
178  }
179  return true;
180 }
181 
184 
185  psd.addNode(edm::ParameterDescription<double>("alphaEB", 1.138, true) and
186  edm::ParameterDescription<double>("alphaEE", 1.89, true) and
187  edm::ParameterDescription<std::string>("AlphaBetaFilename", "NOFILE", false) and
188  edm::ParameterDescription<double>("betaEB", 1.655, true) and
189  edm::ParameterDescription<double>("MinAmplEndcap", 14.0, true) and
190  edm::ParameterDescription<double>("MinAmplBarrel", 8.0, true) and
191  edm::ParameterDescription<double>("betaEE", 1.4, true) and
192  edm::ParameterDescription<bool>("UseDynamicPedestal", true, true));
193 
194  return psd;
195 }
196 
201  "EcalUncalibRecHitWorkerFixedAlphaBetaFit");
205  "EcalUncalibRecHitWorkerFixedAlphaBetaFit");
ConfigurationDescriptions.h
runTheMatrix.ret
ret
prodAgent to be discontinued
Definition: runTheMatrix.py:355
EcalCondObjectContainer::end
const_iterator end() const
Definition: EcalCondObjectContainer.h:76
EcalUncalibRecHitFixedAlphaBetaAlgo::SetDynamicPedestal
void SetDynamicPedestal(bool dyn_pede)
Definition: EcalUncalibRecHitFixedAlphaBetaAlgo.h:415
Handle.h
EcalPedestals.h
EcalUncalibRecHitFillDescriptionWorkerFactory.h
MessageLogger.h
EcalPedestal::mean_x6
float mean_x6
Definition: EcalPedestals.h:21
ESHandle.h
edm::DataFrameContainer::const_iterator
boost::transform_iterator< IterHelp, boost::counting_iterator< int > > const_iterator
Definition: DataFrameContainer.h:61
EBDetId::ic
int ic() const
get ECAL/crystal number inside SM
Definition: EBDetId.cc:41
EBDetId
Definition: EBDetId.h:17
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
EcalUncalibRecHitWorkerFixedAlphaBetaFit::run
bool run(const edm::Event &evt, const EcalDigiCollection::const_iterator &digi, EcalUncalibratedRecHitCollection &result) override
Definition: EcalUncalibRecHitWorkerFixedAlphaBetaFit.cc:99
edm::LogInfo
Definition: MessageLogger.h:254
EcalUncalibRecHitWorkerFixedAlphaBetaFit::algoEB_
EcalUncalibRecHitFixedAlphaBetaAlgo< EBDataFrame > algoEB_
Definition: EcalUncalibRecHitWorkerFixedAlphaBetaFit.h:40
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
edm::SortedCollection
Definition: SortedCollection.h:49
EcalUncalibratedRecHit.h
EcalUncalibRecHitWorkerFixedAlphaBetaFit::alphaEB_
double alphaEB_
Definition: EcalUncalibRecHitWorkerFixedAlphaBetaFit.h:43
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
EcalUncalibRecHitWorkerFixedAlphaBetaFit::betaEB_
double betaEB_
Definition: EcalUncalibRecHitWorkerFixedAlphaBetaFit.h:44
EcalCondObjectContainer< EcalMGPAGainRatio >
EcalBarrel
Definition: EcalSubdetector.h:10
EcalRecHitCollections.h
edmScanValgrind.buffer
buffer
Definition: edmScanValgrind.py:171
EcalPedestal::mean_x1
float mean_x1
Definition: EcalPedestals.h:23
DetId
Definition: DetId.h:17
EcalUncalibRecHitFixedAlphaBetaAlgo::SetMinAmpl
void SetMinAmpl(double ampl)
Definition: EcalUncalibRecHitFixedAlphaBetaAlgo.h:411
MakerMacros.h
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
EcalUncalibRecHitWorkerFixedAlphaBetaFit::EcalUncalibRecHitWorkerFixedAlphaBetaFit
EcalUncalibRecHitWorkerFixedAlphaBetaFit()
Definition: EcalUncalibRecHitWorkerFixedAlphaBetaFit.h:26
EcalPedestal::mean_x12
float mean_x12
Definition: EcalPedestals.h:19
EcalUncalibRecHitWorkerFixedAlphaBetaFit::getAlgoDescription
edm::ParameterSetDescription getAlgoDescription() override
Definition: EcalUncalibRecHitWorkerFixedAlphaBetaFit.cc:182
EcalUncalibRecHitWorkerRunOneDigiBase
Definition: EcalUncalibRecHitWorkerRunOneDigiBase.h:10
EcalUncalibRecHitFixedAlphaBetaAlgo::makeRecHit
EcalUncalibratedRecHit makeRecHit(const C &dataFrame, const double *pedestals, const double *gainRatios, const EcalWeightSet::EcalWeightMatrix **weights, const EcalWeightSet::EcalChi2WeightMatrix **chi2Matrix) override
Compute parameters.
Definition: EcalUncalibRecHitFixedAlphaBetaAlgo.h:118
EcalCondObjectContainer::find
const_iterator find(uint32_t rawId) const
Definition: EcalCondObjectContainer.h:53
EcalUncalibRecHitWorkerFixedAlphaBetaFit::alphaEE_
double alphaEE_
Definition: EcalUncalibRecHitWorkerFixedAlphaBetaFit.h:45
EcalUncalibRecHitWorkerFixedAlphaBetaFit::pedHandle
edm::ESHandle< EcalPedestals > pedHandle
Definition: EcalUncalibRecHitWorkerFixedAlphaBetaFit.h:55
EcalUncalibRecHitWorkerFixedAlphaBetaFit::set
void set(const edm::EventSetup &es) override
Definition: EcalUncalibRecHitWorkerFixedAlphaBetaFit.cc:56
EcalMGPAGainRatio.h
ParameterSetDescription.h
DEFINE_EDM_PLUGIN
#define DEFINE_EDM_PLUGIN(factory, type, name)
Definition: PluginFactory.h:124
b
double b
Definition: hdecay.h:118
EcalMGPAGainRatio::gain12Over6
float gain12Over6() const
Definition: EcalMGPAGainRatio.h:19
EEDetId
Definition: EEDetId.h:14
EcalGainRatiosRcd
Definition: EcalGainRatiosRcd.h:5
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
EcalUncalibRecHitWorkerFixedAlphaBetaFit::alphaBetaValues_
std::vector< std::vector< std::pair< double, double > > > alphaBetaValues_
Definition: EcalUncalibRecHitWorkerFixedAlphaBetaFit.h:48
EcalUncalibRecHitWorkerFixedAlphaBetaFit
Definition: EcalUncalibRecHitWorkerFixedAlphaBetaFit.h:23
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:670
edm::ParameterSet
Definition: ParameterSet.h:36
edm::LogError
Definition: MessageLogger.h:183
a
double a
Definition: hdecay.h:119
edmplugin::PluginFactory
Definition: PluginFactory.h:34
EcalPedestalsMapIterator
EcalPedestalsMap::const_iterator EcalPedestalsMapIterator
Definition: EcalPedestals.h:49
FrontierConditions_GlobalTag_cff.file
file
Definition: FrontierConditions_GlobalTag_cff.py:13
EcalUncalibRecHitWorkerFixedAlphaBetaFit::useAlphaBetaArray_
bool useAlphaBetaArray_
Definition: EcalUncalibRecHitWorkerFixedAlphaBetaFit.h:49
EcalUncalibRecHitWorkerFixedAlphaBetaFit::pRatio
edm::ESHandle< EcalGainRatios > pRatio
Definition: EcalUncalibRecHitWorkerFixedAlphaBetaFit.h:54
edm::EventSetup
Definition: EventSetup.h:57
edm::ParameterSetDescription::addNode
ParameterDescriptionNode * addNode(ParameterDescriptionNode const &node)
Definition: ParameterSetDescription.cc:41
EcalGainRatiosRcd.h
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
get
#define get
EcalGainRatios.h
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
EcalUncalibRecHitWorkerFactory.h
EcalUncalibRecHitWorkerFixedAlphaBetaFit::betaEE_
double betaEE_
Definition: EcalUncalibRecHitWorkerFixedAlphaBetaFit.h:46
relativeConstraints.empty
bool empty
Definition: relativeConstraints.py:46
EcalMGPAGainRatio::gain6Over1
float gain6Over1() const
Definition: EcalMGPAGainRatio.h:20
EcalPedestal
Definition: EcalPedestals.h:8
EventSetup.h
EcalUncalibRecHitWorkerFixedAlphaBetaFit::algoEE_
EcalUncalibRecHitFixedAlphaBetaAlgo< EEDataFrame > algoEE_
Definition: EcalUncalibRecHitWorkerFixedAlphaBetaFit.h:41
EBDetId::ism
int ism() const
get the ECAL/SM id
Definition: EBDetId.h:59
EcalPedestalsRcd.h
EcalCondObjectContainer< EcalMGPAGainRatio >::const_iterator
std::vector< Item >::const_iterator const_iterator
Definition: EcalCondObjectContainer.h:19
mps_fire.result
result
Definition: mps_fire.py:303
ParameterSet.h
EcalPedestalsRcd
Definition: EcalPedestalsRcd.h:5
EcalUncalibRecHitFixedAlphaBetaAlgo::SetAlphaBeta
void SetAlphaBeta(double alpha, double beta)
Definition: EcalUncalibRecHitFixedAlphaBetaAlgo.h:404
edm::Event
Definition: Event.h:73
EcalUncalibRecHitWorkerFixedAlphaBetaFit::alphabetaFilename_
std::string alphabetaFilename_
Definition: EcalUncalibRecHitWorkerFixedAlphaBetaFit.h:50
edm::ParameterDescription
Definition: ParameterDescription.h:110
edm::ConsumesCollector
Definition: ConsumesCollector.h:39
EcalMGPAGainRatio
Definition: EcalMGPAGainRatio.h:13
EcalUncalibRecHitWorkerFixedAlphaBetaFit.h
EcalUncalibRecHitWorkerFixedAlphaBetaFit::setAlphaBeta
bool setAlphaBeta()
Definition: EcalUncalibRecHitWorkerFixedAlphaBetaFit.cc:69