10 #ifndef _CachedShowerRegeneratorASCII_StationPositionMatrix_h_
11 #define _CachedShowerRegeneratorASCII_StationPositionMatrix_h_
13 #include <utl/MathConstants.h>
14 #include <sdet/Station.h>
15 #include <sevt/Station.h>
18 namespace CachedShowerRegeneratorASCII {
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);
void SetPhiRange(const double phi, const double dphi)
StationInfoList fStations
Detector description interface for Station-related data.
double GetResamplingArea() const
const StationInfoList & GetStationList() const
bool IsIn(const double phi, const double r) const
const double fPhiGranularity
const double fRGranularity
StationInfoPtrList fEmptyStationInfoPtrList
class to hold data at Station level
StationMatrix fStationMatrix
vector< vector< StationInfoPtrList > > StationMatrix
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)
sevt::Station & GetEvtStation() const
vector< StationInfo > StationInfoList
vector< const StationInfo * > StationInfoPtrList
const sdet::Station & GetDetStation() const
return fEmptyStationInfoPtrList
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)
StationPositionMatrix(const double phiGranularity, const double rGranularity)