10 #ifndef _CachedXShowerRegeneratorAG_StationPositionMatrix_h_
11 #define _CachedXShowerRegeneratorAG_StationPositionMatrix_h_
13 #include <utl/MathConstants.h>
14 #include <sdet/Station.h>
15 #include <sevt/Station.h>
18 namespace CachedXShowerRegeneratorAG {
34 const double phi,
const double dphi,
35 const double r,
const double r1,
const double r2,
37 fDetStation(&dStation),
38 fEvtStation(&eStation),
47 bool IsIn(
const double phi,
const double r)
const
48 {
return IsPhiIn(phi) && IsRIn(r); }
60 double GetR()
const {
return fR; }
62 double GetR1()
const {
return fR1; }
64 double GetR2()
const {
return fR2; }
81 }
else if (fPhi2 >
kPi)
86 IsPhiIn(
const double phi)
90 return fPhi1 <= phi && phi <= fPhi2;
92 return fPhi1 <= phi || phi <= fPhi2;
95 bool IsRIn(
const double r)
const
96 {
return fR1 <= r && r <= fR2; }
106 double fResamplingArea;
129 fPhiGranularity(phiGranularity),
130 fRGranularity(rGranularity),
140 const double phi,
const double dphi,
141 const double r,
const double r1,
const double r2,
144 const StationInfo info(dStation, eStation, phi, dphi, r, r1, r2, area);
145 fStations.push_back(info);
148 void CreateMatrix(
const bool useSpatialStationMatrix =
true);
151 {
return fStations; }
155 const StationInfoPtrList&
156 GetStationList(
const double phi,
const double r)
159 const int iR = GetRIndex(r);
160 if (iR < 0 || iR >= fNR)
162 const int iPhi = GetPhiIndex(phi);
163 return fStationMatrix[iPhi][iR];
168 void DumpStats()
const;
172 GetPhiIndex(
const double phi)
175 const int i = int((phi +
utl::kPi) / fPhiStep);
176 return (i < fNPhi) ? i : fNPhi - 1;
179 int GetRIndex(
const double r)
const
180 {
return int((r - fR1) / fRStep); }
182 void Resize(
const int nPhi,
const int nR);
return fEmptyStationInfoPtrList
Detector description interface for Station-related data.
bool IsIn(const double phi, const double r) const
sevt::Station & GetEvtStation() const
StationPositionMatrix(const double phiGranularity, const double rGranularity)
const double fRGranularity
StationInfoPtrList fEmptyStationInfoPtrList
double GetResamplingArea() const
StationInfo(const sdet::Station &dStation, sevt::Station &eStation, const double phi, const double dphi, const double r, const double r1, const double r2, const double area)
class to hold data at Station level
vector< vector< StationInfoPtrList > > StationMatrix
const double fPhiGranularity
StationInfoList fStations
const sdet::Station & GetDetStation() const
vector< StationInfo > StationInfoList
vector< const StationInfo * > StationInfoPtrList
StationMatrix fStationMatrix
void PushBack(const sdet::Station &dStation, sevt::Station &eStation, const double phi, const double dphi, const double r, const double r1, const double r2, const double area)
void SetPhiRange(const double phi, const double dphi)
const StationInfoList & GetStationList() const