CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
BetaCalculatorECAL Class Reference

#include <BetaCalculatorECAL.h>

Public Member Functions

void addInfoToCandidate (susybsm::HSCParticle &candidate, edm::Handle< reco::TrackCollection > &tracks, edm::Event &iEvent, const edm::EventSetup &iSetup, susybsm::HSCPCaloInfo &caloInfo)
 
 BetaCalculatorECAL (const edm::ParameterSet &iConfig, edm::ConsumesCollector &&iC)
 

Private Member Functions

void addStepToXtal (std::map< int, GlobalPoint > &trackExitPositionMap, std::map< int, float > &trackCrossedXtalMap, DetId aDetId, float step, GlobalPoint point, const CaloSubdetectorGeometry *theSubdetGeometry)
 
std::vector< SteppingHelixStateInfocalcEcalDeposit (const FreeTrajectoryState *tkInnerState, const DetIdAssociator &associator)
 
int getDetailedTrackLengthInXtals (std::map< int, GlobalPoint > &trackExitPositionMap, std::map< int, float > &trackCrossedXtalMap, double &totalLengthCurved, GlobalPoint &internalPointCurved, GlobalPoint &externalPointCurved, const CaloGeometry *theGeometry, const CaloTopology *theTopology, const std::vector< SteppingHelixStateInfo > &neckLace)
 

Private Attributes

const MagneticFieldbField_
 
edm::ESGetToken< MagneticField, IdealMagneticFieldRecordbFieldToken_
 
edm::ESGetToken< CaloTopology, CaloTopologyRecordcaloTopologyToken_
 
edm::EDGetTokenT< EBRecHitCollectionEBRecHitCollectionToken_
 
edm::ESGetToken< DetIdAssociator, DetIdAssociatorRecordecalDetIdAssociatorToken_
 
edm::EDGetTokenT< EERecHitCollectionEERecHitCollectionToken_
 
TrackAssociatorParameters parameters_
 
edm::ESGetToken< CaloGeometry, CaloGeometryRecordtheCaloGeometryToken_
 
TrackDetectorAssociator trackAssociator_
 

Detailed Description

Definition at line 31 of file BetaCalculatorECAL.h.

Constructor & Destructor Documentation

◆ BetaCalculatorECAL()

BetaCalculatorECAL::BetaCalculatorECAL ( const edm::ParameterSet iConfig,
edm::ConsumesCollector &&  iC 
)

Member Function Documentation

◆ addInfoToCandidate()

void BetaCalculatorECAL::addInfoToCandidate ( susybsm::HSCParticle candidate,
edm::Handle< reco::TrackCollection > &  tracks,
edm::Event iEvent,
const edm::EventSetup iSetup,
susybsm::HSCPCaloInfo caloInfo 
)

Definition at line 32 of file BetaCalculatorECAL.cc.

36  {
37  bool setCalo = false;
39 
40  // EcalDetIdAssociator
41  const auto& ecalDetIdAssociator_ = iSetup.getData(ecalDetIdAssociatorToken_);
42  // Get the Bfield
43  bField_ = &iSetup.getData(bFieldToken_);
44  // Geometry
45  const CaloGeometry* theGeometry = &iSetup.getData(theCaloGeometryToken_);
46  // Topology
47  const CaloTopology* theCaloTopology = &iSetup.getData(caloTopologyToken_);
48  // EcalRecHits
50  iEvent.getByToken(EBRecHitCollectionToken_, ebRecHits);
52  iEvent.getByToken(EERecHitCollectionToken_, eeRecHits);
53 
54  // select the track
56  if (candidate.hasTrackRef())
57  track = *(candidate.trackRef());
58  else
59  return; // in case there is no track ref, we can't do much
60 
61  // compute the track isolation
62  result.trkIsoDr = 100;
63  for (reco::TrackCollection::const_iterator ndTrack = tracks->begin(); ndTrack != tracks->end(); ++ndTrack) {
64  double dr =
65  sqrt(pow((track.outerEta() - ndTrack->outerEta()), 2) + pow((track.outerPhi() - ndTrack->outerPhi()), 2));
66  if (dr > 0.00001 && dr < result.trkIsoDr)
67  result.trkIsoDr = dr;
68  }
69 
70  // use the track associator to propagate to the calo
73 
74  // do a custom propagation through Ecal
75  std::map<int, GlobalPoint> trackExitPositionMap; // rawId to exit position (subtracting cry center)
76  std::map<int, float> trackCrossedXtalCurvedMap; // rawId to trackLength
77 
79  // Build set of points in Ecal (necklace) using the propagator
80  std::vector<SteppingHelixStateInfo> neckLace;
81  neckLace = calcEcalDeposit(&tkInnerState, ecalDetIdAssociator_);
82  // Initialize variables to be filled by the track-length function
83  double totalLengthCurved = 0.;
84  GlobalPoint internalPointCurved(0., 0., 0.);
85  GlobalPoint externalPointCurved(0., 0., 0.);
86  if (neckLace.size() > 1) {
87  getDetailedTrackLengthInXtals(trackExitPositionMap,
88  trackCrossedXtalCurvedMap,
89  totalLengthCurved,
90  internalPointCurved,
91  externalPointCurved,
92  &(*theGeometry),
93  &(*theCaloTopology),
94  neckLace);
95  }
96 
97  // Make weighted sum of times
98  float sumWeightedTime = 0;
99  float sumTimeErrorSqr = 0;
100  float sumEnergy = 0;
101  float sumTrackLength = 0;
102  std::vector<EcalRecHit> crossedRecHits;
104 
105  std::map<int, GlobalPoint>::const_iterator trackExitMapIt = trackExitPositionMap.begin();
106  for (std::map<int, float>::const_iterator mapIt = trackCrossedXtalCurvedMap.begin();
107  mapIt != trackCrossedXtalCurvedMap.end();
108  ++mapIt) {
109  if (DetId(mapIt->first).subdetId() == EcalBarrel) {
110  EBDetId ebDetId(mapIt->first);
111  thisHit = ebRecHits->find(ebDetId);
112  if (thisHit == ebRecHits->end()) {
113  //std::cout << "\t Could not find crossedEcal detId: " << ebDetId << " in EBRecHitCollection!" << std::endl;
114  continue;
115  }
116  const EcalRecHit hit = *thisHit;
117  // Cut out badly-reconstructed hits
118  if (!hit.isTimeValid())
119  continue;
120  uint32_t rhFlag = hit.recoFlag();
121  if ((rhFlag != EcalRecHit::kGood) && (rhFlag != EcalRecHit::kOutOfTime) && (rhFlag != EcalRecHit::kPoorCalib))
122  continue;
123 
124  float errorOnThis = hit.timeError();
125  sumTrackLength += mapIt->second;
126  sumEnergy += hit.energy();
127  crossedRecHits.push_back(hit);
128  // result.ecalSwissCrossKs.push_back(EcalSeverityLevelAlgo::spikeFromNeighbours(ebDetId,(*ebRecHits),0.2,EcalSeverityLevelAlgo::kSwissCross));
129  // result.ecalE1OverE9s.push_back(EcalSeverityLevelAlgo::spikeFromNeighbours(ebDetId,(*ebRecHits),0.2,EcalSeverityLevelAlgo::kE1OverE9));
130  result.ecalTrackLengths.push_back(mapIt->second);
131  result.ecalTrackExitPositions.push_back(trackExitMapIt->second);
132  result.ecalEnergies.push_back(hit.energy());
133  result.ecalTimes.push_back(hit.time());
134  result.ecalTimeErrors.push_back(hit.timeError());
135  result.ecalOutOfTimeEnergies.push_back(0.);
136  result.ecalOutOfTimeChi2s.push_back(0.);
137  result.ecalChi2s.push_back(hit.chi2());
138  result.ecalDetIds.push_back(ebDetId);
139  // SIC DEBUG
140  //std::cout << " SIC DEBUG: time error on this crossed RecHit: " << errorOnThis << " energy of hit: "
141  // << hit.energy() << " time of hit: " << hit.time() << " trackLength: " << mapIt->second << std::endl;
142 
143  if (hit.isTimeErrorValid()) // use hit time for weighted time average
144  {
145  sumWeightedTime += hit.time() / (errorOnThis * errorOnThis);
146  sumTimeErrorSqr += 1 / (errorOnThis * errorOnThis);
147  }
148  }
149  trackExitMapIt++;
150  }
151 
152  if (!crossedRecHits.empty()) {
153  setCalo = true;
154  sort(crossedRecHits.begin(), crossedRecHits.end(), [](auto& x, auto& y) { return (x.energy() > y.energy()); });
155  result.ecalCrossedEnergy = sumEnergy;
156  result.ecalCrysCrossed = crossedRecHits.size();
157  result.ecalDeDx = sumEnergy / sumTrackLength;
158  // replace the below w/o trackassociator quantities?
159  result.ecal3by3dir = info.nXnEnergy(TrackDetMatchInfo::EcalRecHits, 1);
160  result.ecal5by5dir = info.nXnEnergy(TrackDetMatchInfo::EcalRecHits, 2);
161 
162  if (sumTimeErrorSqr > 0) {
163  result.ecalTime = sumWeightedTime / sumTimeErrorSqr;
164  result.ecalTimeError = sqrt(1 / sumTimeErrorSqr);
165  DetId maxEnergyId = crossedRecHits.begin()->id();
166 
167  if (maxEnergyId != DetId()) // double check
168  {
169  // To get beta, we assume photon propagation time is about the same for muons and e/gamma
170  // Since the typical path length is >> crystal length, this shouldn't be too bad
171  GlobalPoint position = info.getPosition(maxEnergyId); // position of crystal center on front face
172  double frontFaceR = sqrt(pow(position.x(), 2) + pow(position.y(), 2) + pow(position.z(), 2));
173  double muonShowerMax = frontFaceR + 11.5; // assume muon "showerMax" is halfway into the crystal
174  double gammaShowerMax = frontFaceR + 6.23; // 7 X0 for e/gamma showerMax
175  double speedOfLight = 29.979; // cm/ns
176  result.ecalBeta = (muonShowerMax) / (result.ecalTime * speedOfLight + gammaShowerMax);
177  result.ecalBetaError = (speedOfLight * muonShowerMax * result.ecalTimeError) /
178  pow(speedOfLight * result.ecalTime + gammaShowerMax, 2);
179  result.ecalInvBetaError = speedOfLight * result.ecalTimeError / muonShowerMax;
180  }
181  // SIC debug
182  //std::cout << "BetaCalcEcal: CrossedRecHits: " << crossedRecHits.size()
183  // << " ecalTime: " << result.ecalTime << " timeError: " << result.ecalTimeError
184  // << " ecalCrossedEnergy: " << result.ecalCrossedEnergy << " ecalBeta: " << result.ecalBeta
185  // << " ecalBetaError: " << result.ecalBetaError << " ecalDeDx (MeV/cm): " << 1000*result.ecalDeDx << std::endl;
186  }
187  }
188 
189  if (!info.crossedHcalRecHits.empty()) {
190  // HCAL (not ECAL) info
191  result.hcalCrossedEnergy = info.crossedEnergy(TrackDetMatchInfo::HcalRecHits);
192  result.hoCrossedEnergy = info.crossedEnergy(TrackDetMatchInfo::HORecHits);
193  //maxEnergyId = info.findMaxDeposition(TrackDetMatchInfo::HcalRecHits);
194  result.hcal3by3dir = info.nXnEnergy(TrackDetMatchInfo::HcalRecHits, 1);
195  result.hcal5by5dir = info.nXnEnergy(TrackDetMatchInfo::HcalRecHits, 2);
196  }
197 
198  if (setCalo)
199  caloInfo = result;
200 }

References TrackDetectorAssociator::associate(), bField_, bFieldToken_, calcEcalDeposit(), caloTopologyToken_, flavorHistoryFilter_cfi::dr, EBRecHitCollectionToken_, EcalBarrel, ecalDetIdAssociatorToken_, TrackDetMatchInfo::EcalRecHits, EERecHitCollectionToken_, edm::SortedCollection< T, SORT >::end(), edm::SortedCollection< T, SORT >::find(), edm::EventSetup::getData(), getDetailedTrackLengthInXtals(), TrackDetectorAssociator::getFreeTrajectoryState(), susybsm::HSCParticle::hasTrackRef(), TrackDetMatchInfo::HcalRecHits, TrackDetMatchInfo::HORecHits, iEvent, info(), trajectoryStateTransform::innerFreeState(), EcalRecHit::kGood, EcalRecHit::kOutOfTime, EcalRecHit::kPoorCalib, parameters_, position, funct::pow(), mps_fire::result, fastsim::Constants::speedOfLight, mathSSE::sqrt(), DetId::subdetId(), theCaloGeometryToken_, HLT_FULL_cff::track, trackAssociator_, susybsm::HSCParticle::trackRef(), PDWG_EXOHSCP_cff::tracks, x, and y.

◆ addStepToXtal()

void BetaCalculatorECAL::addStepToXtal ( std::map< int, GlobalPoint > &  trackExitPositionMap,
std::map< int, float > &  trackCrossedXtalMap,
DetId  aDetId,
float  step,
GlobalPoint  point,
const CaloSubdetectorGeometry theSubdetGeometry 
)
private

Definition at line 315 of file BetaCalculatorECAL.cc.

320  {
321  auto cell_p = theSubdetGeometry->getGeometry(aDetId);
322  GlobalPoint p = cell_p->getPosition(23);
323  GlobalPoint diff(point.x() - p.x(), point.y() - p.y(), point.z() - p.z());
324 
325  std::map<int, GlobalPoint>::iterator xtal = trackExitPositionMap.find(aDetId.rawId());
326  if (xtal != trackExitPositionMap.end())
327  ((*xtal).second) = diff;
328  else
329  trackExitPositionMap.insert(std::pair<int, GlobalPoint>(aDetId.rawId(), diff));
330 
331  std::map<int, float>::iterator xtal2 = trackCrossedXtalMap.find(aDetId.rawId());
332  if (xtal2 != trackCrossedXtalMap.end())
333  ((*xtal2).second) += step;
334  else
335  trackCrossedXtalMap.insert(std::pair<int, float>(aDetId.rawId(), step));
336 }

References change_name::diff, CaloSubdetectorGeometry::getGeometry(), AlCaHLTBitMon_ParallelJobs::p, point, and DetId::rawId().

Referenced by getDetailedTrackLengthInXtals().

◆ calcEcalDeposit()

std::vector< SteppingHelixStateInfo > BetaCalculatorECAL::calcEcalDeposit ( const FreeTrajectoryState tkInnerState,
const DetIdAssociator associator 
)
private

Definition at line 202 of file BetaCalculatorECAL.cc.

203  {
204  // Set some parameters
205  double minR = associator.volume().minR();
206  double minZ = associator.volume().minZ();
207  double maxR = associator.volume().maxR();
208  double maxZ = associator.volume().maxZ();
209 
210  // Define the TrackOrigin (where the propagation starts)
211  SteppingHelixStateInfo trackOrigin(*tkInnerState);
212 
213  // Define Propagator
214  auto prop = std::make_unique<SteppingHelixPropagator>(bField_, alongMomentum);
215  prop->setMaterialMode(false);
216  prop->applyRadX0Correction(true);
217 
218  return propagateThoughFromIP(trackOrigin, prop.get(), associator.volume(), 500, 0.1, minR, minZ, maxR, maxZ);
219 }

References alongMomentum, ctfWithMaterialTrackMCMatch_cfi::associator, bField_, CosmicsPD_Skims::maxZ, HLT_FULL_cff::minR, CosmicGenFilterHelix_cff::minZ, and propagateThoughFromIP().

Referenced by addInfoToCandidate().

◆ getDetailedTrackLengthInXtals()

int BetaCalculatorECAL::getDetailedTrackLengthInXtals ( std::map< int, GlobalPoint > &  trackExitPositionMap,
std::map< int, float > &  trackCrossedXtalMap,
double &  totalLengthCurved,
GlobalPoint internalPointCurved,
GlobalPoint externalPointCurved,
const CaloGeometry theGeometry,
const CaloTopology theTopology,
const std::vector< SteppingHelixStateInfo > &  neckLace 
)
private

Definition at line 221 of file BetaCalculatorECAL.cc.

228  {
229  GlobalPoint origin(0., 0., 0.);
230  internalPointCurved = origin;
231  externalPointCurved = origin;
232 
233  bool firstPoint = false;
234  trackCrossedXtalMap.clear();
235 
236  const CaloSubdetectorGeometry* theBarrelSubdetGeometry = theGeometry->getSubdetectorGeometry(DetId::Ecal, 1);
237  const CaloSubdetectorGeometry* theEndcapSubdetGeometry = theGeometry->getSubdetectorGeometry(DetId::Ecal, 2);
238 
239  for (std::vector<SteppingHelixStateInfo>::const_iterator itr = (neckLace.begin() + 1); itr != neckLace.end(); ++itr) {
240  GlobalPoint probe_gp = (*itr).position();
241  std::vector<DetId> surroundingMatrix;
242 
243  EBDetId closestBarrelDetIdToProbe = ((theBarrelSubdetGeometry->getClosestCell(probe_gp)).rawId());
244  EEDetId closestEndcapDetIdToProbe = ((theEndcapSubdetGeometry->getClosestCell(probe_gp)).rawId());
245 
246  // check if the probe is inside the xtal
247  if ((closestEndcapDetIdToProbe) && (theGeometry->getSubdetectorGeometry(closestEndcapDetIdToProbe)
248  ->getGeometry(closestEndcapDetIdToProbe)
249  ->inside(probe_gp))) {
250  double step = ((*itr).position() - (*(itr - 1)).position()).mag();
251  GlobalPoint point = itr->position();
253  trackExitPositionMap, trackCrossedXtalMap, closestEndcapDetIdToProbe, step, point, theEndcapSubdetGeometry);
254  totalLengthCurved += step;
255 
256  if (firstPoint == false) {
257  internalPointCurved = probe_gp;
258  firstPoint = true;
259  }
260 
261  externalPointCurved = probe_gp;
262  }
263 
264  if ((closestBarrelDetIdToProbe) && (theGeometry->getSubdetectorGeometry(closestBarrelDetIdToProbe)
265  ->getGeometry(closestBarrelDetIdToProbe)
266  ->inside(probe_gp))) {
267  double step = ((*itr).position() - (*(itr - 1)).position()).mag();
268  GlobalPoint point = itr->position();
270  trackExitPositionMap, trackCrossedXtalMap, closestBarrelDetIdToProbe, step, point, theBarrelSubdetGeometry);
271  totalLengthCurved += step;
272 
273  if (firstPoint == false) {
274  internalPointCurved = probe_gp;
275  firstPoint = true;
276  }
277 
278  externalPointCurved = probe_gp;
279  } else {
280  // 3x3 matrix surrounding the probe
281  surroundingMatrix =
282  theTopology->getSubdetectorTopology(closestBarrelDetIdToProbe)->getWindow(closestBarrelDetIdToProbe, 3, 3);
283 
284  for (unsigned int k = 0; k < surroundingMatrix.size(); ++k) {
285  if (theGeometry->getSubdetectorGeometry(surroundingMatrix.at(k))
286  ->getGeometry(surroundingMatrix.at(k))
287  ->inside(probe_gp)) {
288  double step = ((*itr).position() - (*(itr - 1)).position()).mag();
289  GlobalPoint point = itr->position();
290  addStepToXtal(trackExitPositionMap,
291  trackCrossedXtalMap,
292  surroundingMatrix[k],
293  step,
294  point,
295  theGeometry->getSubdetectorGeometry(surroundingMatrix.at(k)));
296  totalLengthCurved += step;
297 
298  if (firstPoint == false) {
299  internalPointCurved = probe_gp;
300  firstPoint = true;
301  }
302 
303  externalPointCurved = probe_gp;
304  }
305  }
306 
307  // clear neighborhood matrix
308  surroundingMatrix.clear();
309  }
310  }
311 
312  return 0;
313 }

References addStepToXtal(), DetId::Ecal, CaloSubdetectorGeometry::getClosestCell(), CaloSubdetectorGeometry::getGeometry(), ecaldqm::getGeometry(), CaloGeometry::getSubdetectorGeometry(), CaloTopology::getSubdetectorTopology(), CaloSubdetectorTopology::getWindow(), dqmdumpme::k, mag(), and point.

Referenced by addInfoToCandidate().

Member Data Documentation

◆ bField_

const MagneticField* BetaCalculatorECAL::bField_
private

Definition at line 68 of file BetaCalculatorECAL.h.

Referenced by addInfoToCandidate(), and calcEcalDeposit().

◆ bFieldToken_

edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> BetaCalculatorECAL::bFieldToken_
private

Definition at line 65 of file BetaCalculatorECAL.h.

Referenced by addInfoToCandidate().

◆ caloTopologyToken_

edm::ESGetToken<CaloTopology, CaloTopologyRecord> BetaCalculatorECAL::caloTopologyToken_
private

Definition at line 67 of file BetaCalculatorECAL.h.

Referenced by addInfoToCandidate().

◆ EBRecHitCollectionToken_

edm::EDGetTokenT<EBRecHitCollection> BetaCalculatorECAL::EBRecHitCollectionToken_
private

Definition at line 61 of file BetaCalculatorECAL.h.

Referenced by addInfoToCandidate().

◆ ecalDetIdAssociatorToken_

edm::ESGetToken<DetIdAssociator, DetIdAssociatorRecord> BetaCalculatorECAL::ecalDetIdAssociatorToken_
private

Definition at line 64 of file BetaCalculatorECAL.h.

Referenced by addInfoToCandidate().

◆ EERecHitCollectionToken_

edm::EDGetTokenT<EERecHitCollection> BetaCalculatorECAL::EERecHitCollectionToken_
private

Definition at line 62 of file BetaCalculatorECAL.h.

Referenced by addInfoToCandidate().

◆ parameters_

TrackAssociatorParameters BetaCalculatorECAL::parameters_
private

◆ theCaloGeometryToken_

edm::ESGetToken<CaloGeometry, CaloGeometryRecord> BetaCalculatorECAL::theCaloGeometryToken_
private

Definition at line 66 of file BetaCalculatorECAL.h.

Referenced by addInfoToCandidate().

◆ trackAssociator_

TrackDetectorAssociator BetaCalculatorECAL::trackAssociator_
private

Definition at line 59 of file BetaCalculatorECAL.h.

Referenced by addInfoToCandidate(), and BetaCalculatorECAL().

change_name.diff
diff
Definition: change_name.py:13
DDAxes::y
EcalRecHit
Definition: EcalRecHit.h:15
fastsim::Constants::speedOfLight
static constexpr double speedOfLight
Speed of light [cm / ns].
Definition: Constants.h:12
PDWG_EXOHSCP_cff.tracks
tracks
Definition: PDWG_EXOHSCP_cff.py:28
edm::ESInputTag
Definition: ESInputTag.h:87
edm::SortedCollection< EcalRecHit >::const_iterator
std::vector< EcalRecHit >::const_iterator const_iterator
Definition: SortedCollection.h:80
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11713
HLT_FULL_cff.minR
minR
Definition: HLT_FULL_cff.py:95134
step
step
Definition: StallMonitor.cc:94
EBDetId
Definition: EBDetId.h:17
TrackDetectorAssociator::useDefaultPropagator
void useDefaultPropagator()
use the default propagator
Definition: TrackDetectorAssociator.cc:81
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
CaloGeometry::getSubdetectorGeometry
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:34
edm::SortedCollection< EcalRecHit >
info
static const TGPicture * info(bool iBackgroundIsBlack)
Definition: FWCollectionSummaryWidget.cc:153
DDAxes::x
edm::ConsumesCollector::esConsumes
auto esConsumes()
Definition: ConsumesCollector.h:97
edm::Handle
Definition: AssociativeIterator.h:50
CaloTopology
Definition: CaloTopology.h:19
EcalBarrel
Definition: EcalSubdetector.h:10
BetaCalculatorECAL::parameters_
TrackAssociatorParameters parameters_
Definition: BetaCalculatorECAL.h:60
CosmicsPD_Skims.maxZ
maxZ
Definition: CosmicsPD_Skims.py:136
BetaCalculatorECAL::theCaloGeometryToken_
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > theCaloGeometryToken_
Definition: BetaCalculatorECAL.h:66
TrackDetMatchInfo::EcalRecHits
Definition: TrackDetMatchInfo.h:15
DetId
Definition: DetId.h:17
BetaCalculatorECAL::ecalDetIdAssociatorToken_
edm::ESGetToken< DetIdAssociator, DetIdAssociatorRecord > ecalDetIdAssociatorToken_
Definition: BetaCalculatorECAL.h:64
CaloGeometry
Definition: CaloGeometry.h:21
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
BetaCalculatorECAL::EBRecHitCollectionToken_
edm::EDGetTokenT< EBRecHitCollection > EBRecHitCollectionToken_
Definition: BetaCalculatorECAL.h:61
reco::Track
Definition: Track.h:27
edm::ConsumesCollector::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: ConsumesCollector.h:55
ecaldqm::getGeometry
const CaloGeometry * getGeometry()
Definition: EcalDQMCommonUtils.cc:478
EcalRecHit::kGood
Definition: EcalRecHit.h:21
dqmdumpme.k
k
Definition: dqmdumpme.py:60
ctfWithMaterialTrackMCMatch_cfi.associator
associator
Definition: ctfWithMaterialTrackMCMatch_cfi.py:7
Point3DBase< float, GlobalTag >
TrackAssociatorParameters::loadParameters
void loadParameters(const edm::ParameterSet &, edm::ConsumesCollector &)
Definition: TrackAssociatorParameters.cc:18
DetId::subdetId
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
Definition: DetId.h:48
EEDetId
Definition: EEDetId.h:14
SteppingHelixStateInfo
Definition: SteppingHelixStateInfo.h:27
susybsm::HSCPCaloInfo
Definition: HSCPCaloInfo.h:13
BetaCalculatorECAL::EERecHitCollectionToken_
edm::EDGetTokenT< EERecHitCollection > EERecHitCollectionToken_
Definition: BetaCalculatorECAL.h:62
EcalRecHit::kOutOfTime
Definition: EcalRecHit.h:23
BetaCalculatorECAL::getDetailedTrackLengthInXtals
int getDetailedTrackLengthInXtals(std::map< int, GlobalPoint > &trackExitPositionMap, std::map< int, float > &trackCrossedXtalMap, double &totalLengthCurved, GlobalPoint &internalPointCurved, GlobalPoint &externalPointCurved, const CaloGeometry *theGeometry, const CaloTopology *theTopology, const std::vector< SteppingHelixStateInfo > &neckLace)
Definition: BetaCalculatorECAL.cc:221
edm::ParameterSet
Definition: ParameterSet.h:47
susybsm::HSCParticle::hasTrackRef
bool hasTrackRef() const
Definition: HSCParticle.h:50
TrackDetectorAssociator::getFreeTrajectoryState
static FreeTrajectoryState getFreeTrajectoryState(const MagneticField *, const reco::Track &)
get FreeTrajectoryState from different track representations
Definition: TrackDetectorAssociator.cc:553
edm::SortedCollection::end
const_iterator end() const
Definition: SortedCollection.h:267
CaloTopology::getSubdetectorTopology
const CaloSubdetectorTopology * getSubdetectorTopology(const DetId &id) const
access the subdetector Topology for the given subdetector directly
Definition: CaloTopology.cc:17
position
static int position[264][3]
Definition: ReadPGInfo.cc:289
iEvent
int iEvent
Definition: GenABIO.cc:224
BetaCalculatorECAL::bFieldToken_
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > bFieldToken_
Definition: BetaCalculatorECAL.h:65
BetaCalculatorECAL::caloTopologyToken_
edm::ESGetToken< CaloTopology, CaloTopologyRecord > caloTopologyToken_
Definition: BetaCalculatorECAL.h:67
BetaCalculatorECAL::bField_
const MagneticField * bField_
Definition: BetaCalculatorECAL.h:68
CaloSubdetectorGeometry::getGeometry
virtual std::shared_ptr< const CaloCellGeometry > getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.
Definition: CaloSubdetectorGeometry.cc:36
CaloSubdetectorGeometry::getClosestCell
virtual DetId getClosestCell(const GlobalPoint &r) const
Definition: CaloSubdetectorGeometry.cc:44
propagateThoughFromIP
std::vector< SteppingHelixStateInfo > propagateThoughFromIP(const SteppingHelixStateInfo &state, const Propagator *prop, const FiducialVolume &volume, int nsteps, float step, float minR, float minZ, float maxR, float maxZ)
Definition: CachedTrajectory.cc:18
DetId::Ecal
Definition: DetId.h:27
itr
std::vector< std::pair< float, float > >::iterator itr
Definition: HGCDigitizer.cc:29
BetaCalculatorECAL::addStepToXtal
void addStepToXtal(std::map< int, GlobalPoint > &trackExitPositionMap, std::map< int, float > &trackCrossedXtalMap, DetId aDetId, float step, GlobalPoint point, const CaloSubdetectorGeometry *theSubdetGeometry)
Definition: BetaCalculatorECAL.cc:315
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:120
CaloSubdetectorTopology::getWindow
virtual std::vector< DetId > getWindow(const DetId &id, const int &northSouthSize, const int &eastWestSize) const
Definition: CaloSubdetectorTopology.cc:4
trajectoryStateTransform::innerFreeState
FreeTrajectoryState innerFreeState(const reco::Track &tk, const MagneticField *field, bool withErr=true)
Definition: TrajectoryStateTransform.cc:86
TrackDetMatchInfo
Definition: TrackDetMatchInfo.h:13
mag
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
Definition: Basic3DVectorLD.h:127
edm::SortedCollection::find
iterator find(key_type k)
Definition: SortedCollection.h:240
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
FreeTrajectoryState
Definition: FreeTrajectoryState.h:27
flavorHistoryFilter_cfi.dr
dr
Definition: flavorHistoryFilter_cfi.py:37
susybsm::HSCParticle::trackRef
reco::TrackRef trackRef() const
Definition: HSCParticle.h:64
CaloSubdetectorGeometry
Definition: CaloSubdetectorGeometry.h:22
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
EcalRecHit::kPoorCalib
Definition: EcalRecHit.h:26
BetaCalculatorECAL::trackAssociator_
TrackDetectorAssociator trackAssociator_
Definition: BetaCalculatorECAL.h:59
TrackDetMatchInfo::HcalRecHits
Definition: TrackDetMatchInfo.h:15
TrackDetMatchInfo::HORecHits
Definition: TrackDetMatchInfo.h:15
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
mps_fire.result
result
Definition: mps_fire.py:311
TrackDetectorAssociator::associate
TrackDetMatchInfo associate(const edm::Event &, const edm::EventSetup &, const FreeTrajectoryState &, const AssociatorParameters &)
Definition: TrackDetectorAssociator.cc:110
point
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
edm::InputTag
Definition: InputTag.h:15
alongMomentum
Definition: PropagationDirection.h:4
hit
Definition: SiStripHitEffFromCalibTree.cc:88
BetaCalculatorECAL::calcEcalDeposit
std::vector< SteppingHelixStateInfo > calcEcalDeposit(const FreeTrajectoryState *tkInnerState, const DetIdAssociator &associator)
Definition: BetaCalculatorECAL.cc:202
CosmicGenFilterHelix_cff.minZ
minZ
i.e.
Definition: CosmicGenFilterHelix_cff.py:9