28 const std::vector<Gaudi::Details::PropertyBase*> props = this->getProperties();
29 for( Gaudi::Details::PropertyBase* prop : props ) {
30 if (prop->ownerTypeName()==this->type()) {
31 ATH_MSG_DEBUG(
"Property:\t" << prop->name() <<
"\t : \t"<< prop->toString());
38 return StatusCode::SUCCESS;
49 bool passesPhi =
true;
50 bool passesEta =
true;
54 bool isTruthBin = ((m_truthbin.size()>step.stepNum())&&(m_truthbin[step.stepNum()]==idx));
63 half_xm_bin_pars.xm = step.binWidth(4)/2.0;
66 double xrange = std::abs(xshift) + r1 * step.binWidth(2) / 2.0
67 + ((r2*step.binWidth(3) - r1*step.binWidth(2)) / (r2 - r1) * (hitr - r1))/2.0;
70 ATH_MSG_ERROR(
"Negative xrange: " << std::abs(xshift) <<
" " << r1 * step.binWidth(2) / 2.0 <<
" "
71 << ((r2*step.binWidth(3) - r1*step.binWidth(2)) / (r2 - r1) * (hitr - r1))/2.0);
75 double stripLength = 25.0;
92 <<
" " << hitr <<
" " << trackpars);
97 double fw_phiWindow = phiconsts.
phiWindow( hitr);
100 <<
" Orig: " << r1 * step.binWidth(2) / 2.0 <<
" " << ((r2*step.binWidth(3) - r1*step.binWidth(2)) / (r2 - r1) * (hitr - r1))/2.0 <<
" " << std::abs(xshift));
109 double width_z_in = step.binWidth(0)/2.0;
110 double width_z_out = step.binWidth(1)/2.0;
111 double zrange = width_z_in + (width_z_out-width_z_in) * std::abs((hitr-r1))/(r2-r1);
115 double stripLength = 25.0;
123 padding += stripLength;
129 << storedhit.
etaShift <<
" " <<
zrange + padding <<
" " <<
zrange <<
" "<< padding <<
" " << hitr <<
" " << trackpars);
134 double fw_etaWindow = etaconsts.
etaWindow( hitr);
142 if (isTruthBin && !(passesPhi && passesEta))
ATH_MSG_DEBUG(
"Hit in truth bin fails cuts: " <<
" passesPhi=" << passesPhi <<
" passesEta=" << passesEta);
144 return passesPhi && passesEta;
150 for (
const unsigned &steppar : step.stepPars()) {
151 for (
const unsigned &phipar :
m_phipars) {
152 if (steppar == phipar)
161 for (
const unsigned &steppar : step.stepPars()) {
162 for (
const unsigned &etapar :
m_etapars) {
163 if (steppar == etapar)
179 keypars.
phi1 = step.binCenter(2,idx[0]);
180 keypars.
phi2 = step.binCenter(3,idx[1]);
181 keypars.
xm = step.binCenter(4, idx[2]);
183 auto rotated_coords =
m_keylyrtool.getRotatedConfig(keypars);
185 retv.
y = rotated_coords.y;
186 retv.
x1p = rotated_coords.xy1p.first;
187 retv.
y1p = rotated_coords.xy1p.second;
188 retv.
cosb = rotated_coords.rotang.first;
189 retv.
sinb = rotated_coords.rotang.second;
190 retv.
x_m = keypars.
xm;
191 retv.
x_factor = 4.0 * keypars.
xm / (rotated_coords.y * rotated_coords.y);
198 double w_in = r_in * step.binWidth(2) / 2.0;
199 double w_out = r_out * step.binWidth(3) / 2.0;
200 double w_x = step.binWidth(4) / 2.0;
202 retv.
w_x = 4.0 * w_x / ((r_out - r_in) * (r_out - r_in));
204 retv.
dw_dr = (w_out - w_in) / (r_out - r_in);
217 double z_in = step.binCenter(0, idx[0]);
218 double z_out = step.binCenter(1, idx[1]);
219 double dz_dr = (z_out - z_in) / (r_out - r_in);
224 double w_in = step.binWidth(0) / 2.0;
225 double w_out = step.binWidth(1) / 2.0;
226 double dw_dr = (w_out - w_in) / (r_out - r_in);
234 double xc =
r*cos(
phi);
235 double yc =
r*sin(
phi);
263 if (step.isFirstStep()) {
264 std::string keylayerName =
"reg_" + std::to_string(
m_region.value()) +
"_KeyLayer";
273 std::string stepName =
"reg_" + std::to_string(
m_region.value()) +
"_" + step.stepName();
306 std::string stepName =
"reg_" + std::to_string(
m_region.value()) +
"_" + step.stepName();
Scalar phi() const
phi method
#define ATH_MSG_VERBOSE(x)
Binning Classes for BinStep.
Binning Utilities for GenScanTool.
Binning Classes for BinTool.
Structs that store the 5 track parameters.
static double dPhiHitTrkFromPars(double r, const FPGATrackSimTrackPars &pars)
static double dPhidQOverPt(double hitr)
static double dZdEta(double eta)
int getEtaModule(bool old=false) const
unsigned getPhysLayer(bool old=false) const
SiliconTech getDetType() const
Gaudi::Property< double > m_z0pad
virtual StatusCode initialize() override
Gaudi::Property< std::vector< double > > m_slPerEtaMod
FPGATrackSimKeyLayerTool m_keylyrtool
const std::vector< unsigned > m_phipars
virtual double etaResidual(const FPGATrackSimBinUtil::ParSet &parset, FPGATrackSimHit const *hit) const override
Gaudi::Property< double > m_phiOffset
virtual void writeLUTs(const FPGATrackSimBinStep &step) const override
phiLUTConsts getPhiLUTConsts(const FPGATrackSimBinStep &step, const std::vector< unsigned > &idx) const
Gaudi::Property< double > m_etapad
Gaudi::Property< double > m_d0pad
Gaudi::Property< double > m_rout
bool stepIsREta(const FPGATrackSimBinStep &step) const
Gaudi::Property< double > m_rin
bool stepIsRPhi(const FPGATrackSimBinStep &step) const
Gaudi::Property< double > m_qptpad
const std::vector< unsigned > m_etapars
virtual double phiResidual(const FPGATrackSimBinUtil::ParSet &parset, FPGATrackSimHit const *hit) const override
FPGATrackSimKeyLayerTool::KeyLyrPars parSetToKeyPars(const FPGATrackSimBinUtil::ParSet &parset) const
etaLUTConsts getEtaLUTConsts(const FPGATrackSimBinStep &step, const std::vector< unsigned > &idx) const
Gaudi::Property< unsigned > m_region
virtual const FPGATrackSimTrackPars parSetToTrackPars(const FPGATrackSimBinUtil::ParSet &parset) const override
virtual bool hitInBin(const FPGATrackSimBinStep &step, const FPGATrackSimBinUtil::IdxSet &idx, FPGATrackSimBinUtil::StoredHit &storedhit) const override
Gaudi::Property< double > m_phipad
std::vector< std::string > remainder(const std::vector< std::string > &v1, const std::vector< std::string > &v2)
void xrange(TH1 *h, bool symmetric)
std::shared_ptr< const FPGATrackSimHit > hitptr
void writeVar(const std::string &var, T val)
double etaShift(double z, double r)
double etaWindow(double r)
double phiWindow(double r)
double phiShift(double phi, double r)