Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Accommodate breaking changes in geometry #496

Merged
merged 1 commit into from
Jan 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
64 changes: 32 additions & 32 deletions icaruscode/Analysis/AnalysisTree_module.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2772,37 +2772,37 @@ double icarus::AnalysisTree::bdist(const recob::tracking::Point_t& pos)
// Get geometry.
art::ServiceHandle<geo::Geometry> geom;

geo::CryostatGeo const& cryo0 = geom->Cryostat(0);
geo::CryostatGeo const& cryo1 = geom->Cryostat(1);
geo::CryostatGeo const& cryo0 = geom->Cryostat(geo::CryostatID{0});
geo::CryostatGeo const& cryo1 = geom->Cryostat(geo::CryostatID{1});

geo::TPCGeo const& tpc00 = cryo0.TPC(0);
TVector3 xyzcenter00 = tpc00.GetActiveVolumeCenter();
std::cout << xyzcenter00[0] << " " << xyzcenter00[1] << " " << xyzcenter00[2] << std::endl;
geo::Point_t xyzcenter00 = tpc00.GetActiveVolumeCenter();
std::cout << xyzcenter00.X() << " " << xyzcenter00.Y() << " " << xyzcenter00.Z() << std::endl;

geo::TPCGeo const& tpc01 = cryo0.TPC(1);
TVector3 xyzcenter01 = tpc01.GetActiveVolumeCenter();
std::cout << xyzcenter01[0] << " " << xyzcenter01[1] << " " << xyzcenter01[2] << std::endl;
geo::Point_t xyzcenter01 = tpc01.GetActiveVolumeCenter();
std::cout << xyzcenter01.X() << " " << xyzcenter01.Y() << " " << xyzcenter01.Z() << std::endl;

geo::TPCGeo const& tpc10 = cryo1.TPC(0);
TVector3 xyzcenter10 = tpc10.GetActiveVolumeCenter();
std::cout << xyzcenter10[0] << " " << xyzcenter10[1] << " " << xyzcenter10[2] << std::endl;
geo::Point_t xyzcenter10 = tpc10.GetActiveVolumeCenter();
std::cout << xyzcenter10.X() << " " << xyzcenter10.Y() << " " << xyzcenter10.Z() << std::endl;

geo::TPCGeo const& tpc11 = cryo1.TPC(1);
TVector3 xyzcenter11 = tpc11.GetActiveVolumeCenter();
std::cout << xyzcenter11[0] << " " << xyzcenter11[1] << " " << xyzcenter11[2] << std::endl;
geo::Point_t xyzcenter11 = tpc11.GetActiveVolumeCenter();
std::cout << xyzcenter11.X() << " " << xyzcenter11.Y() << " " << xyzcenter11.Z() << std::endl;

double h00=tpc00.ActiveHalfHeight();
double w00=tpc00.ActiveHalfWidth();
double l00=tpc00.ActiveLength();
std::cout << h00 << " " << w00 << " " << l00 << std::endl;


double xmin = xyzcenter10[0]-w00;
double xmax = xyzcenter11[0]+w00;
double ymin = xyzcenter00[1]-h00;
double ymax = xyzcenter00[1]+h00;
double zmin = xyzcenter00[2]-l00/2;
double zmax = xyzcenter00[2]+l00/2;
double xmin = xyzcenter10.X()-w00;
double xmax = xyzcenter11.X()+w00;
double ymin = xyzcenter00.Y()-h00;
double ymax = xyzcenter00.Y()+h00;
double zmin = xyzcenter00.Z()-l00/2;
double zmax = xyzcenter00.Z()+l00/2;

double d1; // Distance to right side (wires).
double d2; // Distance to left side (cathode).
Expand Down Expand Up @@ -2842,37 +2842,37 @@ double icarus::AnalysisTree::length(const simb::MCParticle& part, TVector3& star
//double xmin = 0.;


geo::CryostatGeo const& cryo0 = geom->Cryostat(0);
geo::CryostatGeo const& cryo1 = geom->Cryostat(1);
geo::CryostatGeo const& cryo0 = geom->Cryostat(geo::CryostatID{0});
geo::CryostatGeo const& cryo1 = geom->Cryostat(geo::CryostatID{1});

geo::TPCGeo const& tpc00 = cryo0.TPC(0);
TVector3 xyzcenter00 = tpc00.GetActiveVolumeCenter();
std::cout << xyzcenter00[0] << " " << xyzcenter00[1] << " " << xyzcenter00[2] << std::endl;
geo::Point_t xyzcenter00 = tpc00.GetActiveVolumeCenter();
std::cout << xyzcenter00.X() << " " << xyzcenter00.Y() << " " << xyzcenter00.Z() << std::endl;

geo::TPCGeo const& tpc01 = cryo0.TPC(1);
TVector3 xyzcenter01 = tpc01.GetActiveVolumeCenter();
std::cout << xyzcenter01[0] << " " << xyzcenter01[1] << " " << xyzcenter01[2] << std::endl;
geo::Point_t xyzcenter01 = tpc01.GetActiveVolumeCenter();
std::cout << xyzcenter01.X() << " " << xyzcenter01.Y() << " " << xyzcenter01.Z() << std::endl;

geo::TPCGeo const& tpc10 = cryo1.TPC(0);
TVector3 xyzcenter10 = tpc10.GetActiveVolumeCenter();
std::cout << xyzcenter10[0] << " " << xyzcenter10[1] << " " << xyzcenter10[2] << std::endl;
geo::Point_t xyzcenter10 = tpc10.GetActiveVolumeCenter();
std::cout << xyzcenter10.X() << " " << xyzcenter10.Y() << " " << xyzcenter10.Z() << std::endl;

geo::TPCGeo const& tpc11 = cryo1.TPC(1);
TVector3 xyzcenter11 = tpc11.GetActiveVolumeCenter();
std::cout << xyzcenter11[0] << " " << xyzcenter11[1] << " " << xyzcenter11[2] << std::endl;
geo::Point_t xyzcenter11 = tpc11.GetActiveVolumeCenter();
std::cout << xyzcenter11.X() << " " << xyzcenter11.Y() << " " << xyzcenter11.Z() << std::endl;

double h00=tpc00.ActiveHalfHeight();
double w00=tpc00.ActiveHalfWidth();
double l00=tpc00.ActiveLength();
std::cout << h00 << " " << w00 << " " << l00 << std::endl;


double xmin = xyzcenter10[0]-w00;
double xmax = xyzcenter11[0]+w00;
double ymin = xyzcenter00[1]-h00;
double ymax = xyzcenter00[1]+h00;
double zmin = xyzcenter00[2]-l00/2;
double zmax = xyzcenter00[2]+l00/2;
double xmin = xyzcenter10.X()-w00;
double xmax = xyzcenter11.X()+w00;
double ymin = xyzcenter00.Y()-h00;
double ymax = xyzcenter00.Y()+h00;
double zmin = xyzcenter00.Z()-l00/2;
double zmax = xyzcenter00.Z()+l00/2;
//double vDrift = 160*pow(10,-6);

std::cout << "DET DIMENSIONS: xmin = " << xmin << " xmax = " << xmax << " ymin = " << ymin << " ymax = " << ymax << " zmin = " << zmin << " zmax = " << zmax << std::endl;
Expand Down
2 changes: 1 addition & 1 deletion icaruscode/Analysis/TPCPurityMonitor_module.cc
Original file line number Diff line number Diff line change
Expand Up @@ -470,7 +470,7 @@ void TPCPurityMonitor::produce(art::Event& event)
geo::Point_t hitPos = track->LocationAtPoint(trkHitIndex);
geo::Vector_t hitDir = track->DirectionAtPoint(trkHitIndex);
const geo::WireGeo& wireGeo = fGeometry->Wire(hitMetaPair.first->WireID());
geo::Vector_t wireDir(wireGeo.Direction()[0],wireGeo.Direction()[1],wireGeo.Direction()[2]);
geo::Vector_t wireDir = wireGeo.Direction();

pointCloud.emplace_back(hitPos);

Expand Down
27 changes: 14 additions & 13 deletions icaruscode/Analysis/overburden/OBAnaICARUS_module.cc
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
#include <boost/uuid/uuid_generators.hpp> // generators
#include <boost/uuid/uuid_io.hpp> // streaming operators etc.


namespace obana {
class OBAnaICARUS;
}
Expand Down Expand Up @@ -118,12 +117,12 @@ class obana::OBAnaICARUS : public art::EDAnalyzer {
double zmin = -894.951;
double zmax = 894.951;

double _x_max; //!< x-max of volume box used to determine whether to save track information
double _x_min; //!< x-min of volume box used to determine whether to save track information
double _y_max; //!< y-max of volume box used to determine whether to save track information
double _y_min; //!< y-min of volume box used to determine whether to save track information
double _z_max; //!< z-max of volume box used to determine whether to save track information
double _z_min; //!< z-min of volume box used to determine whether to save track information
double _x_max{std::numeric_limits<double>::min()}; //!< x-max of volume box used to determine whether to save track information
double _x_min{std::numeric_limits<double>::max()}; //!< x-min of volume box used to determine whether to save track information
double _y_max{std::numeric_limits<double>::min()}; //!< y-max of volume box used to determine whether to save track information
double _y_min{std::numeric_limits<double>::max()}; //!< y-min of volume box used to determine whether to save track information
double _z_max{std::numeric_limits<double>::min()}; //!< z-max of volume box used to determine whether to save track information
double _z_min{std::numeric_limits<double>::max()}; //!< z-max of volume box used to determine whether to save track information

boost::uuids::uuid _uuid; ///< A unique ID to identify different events in files with same event number
std::string _uuid_str; ///< Same as uuid, but converted to string
Expand Down Expand Up @@ -630,12 +629,14 @@ obana::OBAnaICARUS::OBAnaICARUS(fhicl::ParameterSet const& p)

// Iterate over all TPC's to get bounding box that covers volumes of each individual TPC in the detector
art::ServiceHandle<geo::Geometry const> geo;
_x_min = std::min_element(geo->begin_TPC(), geo->end_TPC(), [](auto const &lhs, auto const &rhs){ return lhs.BoundingBox().MinX() < rhs.BoundingBox().MinX();})->MinX();
_y_min = std::min_element(geo->begin_TPC(), geo->end_TPC(), [](auto const &lhs, auto const &rhs){ return lhs.BoundingBox().MinY() < rhs.BoundingBox().MinY();})->MinY();
_z_min = std::min_element(geo->begin_TPC(), geo->end_TPC(), [](auto const &lhs, auto const &rhs){ return lhs.BoundingBox().MinZ() < rhs.BoundingBox().MinZ();})->MinZ();
_x_max = std::max_element(geo->begin_TPC(), geo->end_TPC(), [](auto const &lhs, auto const &rhs){ return lhs.BoundingBox().MaxX() < rhs.BoundingBox().MaxX();})->MaxX();
_y_max = std::max_element(geo->begin_TPC(), geo->end_TPC(), [](auto const &lhs, auto const &rhs){ return lhs.BoundingBox().MaxY() < rhs.BoundingBox().MaxY();})->MaxY();
_z_max = std::max_element(geo->begin_TPC(), geo->end_TPC(), [](auto const &lhs, auto const &rhs){ return lhs.BoundingBox().MaxZ() < rhs.BoundingBox().MaxZ();})->MaxZ();
for (auto const& tpc : geo->Iterate<geo::TPCGeo>()) {
_x_min = std::min(_x_min, tpc.BoundingBox().MinX());
_y_min = std::min(_y_min, tpc.BoundingBox().MinY());
_z_min = std::min(_z_min, tpc.BoundingBox().MinZ());
_x_max = std::max(_x_max, tpc.BoundingBox().MaxX());
_y_max = std::max(_y_max, tpc.BoundingBox().MaxY());
_z_max = std::max(_z_max, tpc.BoundingBox().MaxZ());
}

std::cout << "TPC limits: " << std::endl;
std::cout << "\tx_max\t" << _x_max << std::endl;
Expand Down
12 changes: 8 additions & 4 deletions icaruscode/Analysis/tools/BasicHitAnalysis_tool.cc
Original file line number Diff line number Diff line change
Expand Up @@ -174,9 +174,13 @@ void BasicHitAnalysis::initializeHists(art::ServiceHandle<art::TFileService>& tf

fHitsByWire.resize(fGeometry->Nplanes());

fHitsByWire[0] = dir.make<TH1D>("HitsByWire0", ";Wire #", fGeometry->Nwires(0), 0., fGeometry->Nwires(0));
fHitsByWire[1] = dir.make<TH1D>("HitsByWire1", ";Wire #", fGeometry->Nwires(1), 0., fGeometry->Nwires(1));
fHitsByWire[2] = dir.make<TH1D>("HitsByWire2", ";Wire #", fGeometry->Nwires(2), 0., fGeometry->Nwires(2));
constexpr geo::TPCID tpcid{0, 0};
auto const n_wires_0 = fGeometry->Nwires(geo::PlaneID{tpcid, 0});
auto const n_wires_1 = fGeometry->Nwires(geo::PlaneID{tpcid, 1});
auto const n_wires_2 = fGeometry->Nwires(geo::PlaneID{tpcid, 2});
fHitsByWire[0] = dir.make<TH1D>("HitsByWire0", ";Wire #", n_wires_0, 0., n_wires_0);
fHitsByWire[1] = dir.make<TH1D>("HitsByWire1", ";Wire #", n_wires_1, 0., n_wires_1);
fHitsByWire[2] = dir.make<TH1D>("HitsByWire2", ";Wire #", n_wires_2, 0., n_wires_2);

fDriftTimes[0] = dir.make<TH1D>("DriftTime0", ";time(ticks)", 2048, 0., 4096.);
fDriftTimes[1] = dir.make<TH1D>("DriftTime1", ";time(ticks)", 2048, 0., 4096.);
Expand Down Expand Up @@ -267,7 +271,7 @@ void BasicHitAnalysis::initializeHists(art::ServiceHandle<art::TFileService>& tf

fBadWPulseHeight = dir.make<TH1D>("BWPulseHeight", "PH (ADC)", 300, 0., 150.);
fBadWPulseHVsWidth = dir.make<TH2D>("BWPHVsWidth", ";PH;Width", 100, 0., 100., 100, 0., 10.);
fBadWHitsByWire = dir.make<TH1D>("BWHitsByWire", ";Wire #", fGeometry->Nwires(2), 0., fGeometry->Nwires(2));
fBadWHitsByWire = dir.make<TH1D>("BWHitsByWire", ";Wire #", n_wires_2, 0., n_wires_2);

fSPHvsIdx[0] = dir.make<TH2D>("SPHVsIdx0", ";PH;Idx", 30, 0., 30., 100, 0., 100.);
fSPHvsIdx[1] = dir.make<TH2D>("SPHVsIdx1", ";PH;Idx", 30, 0., 30., 100, 0., 100.);
Expand Down
2 changes: 1 addition & 1 deletion icaruscode/Analysis/tools/BasicRawDigitAnalysis_tool.cc
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,7 @@ void BasicRawDigitAnalysis::initializeHists(detinfo::DetectorClocksData const& c
fFullRmsHist[plane] = dir.make<TH1D>(histName.c_str(), ";ADC", 100, 0., 20.);

// Need a channel...
raw::ChannelID_t channel = fGeometry.PlaneWireToChannel(plane,0);
raw::ChannelID_t channel = fGeometry.PlaneWireToChannel(geo::WireID(0, 0, plane, 0));

// Recover the filter from signal shaping services...
const icarusutil::FrequencyVec& response = fSignalServices.GetResponse(channel).getConvKernel();
Expand Down
9 changes: 6 additions & 3 deletions icaruscode/Analysis/tools/BasicTrackAnalysis_tool.cc
Original file line number Diff line number Diff line change
Expand Up @@ -142,9 +142,12 @@ void BasicTrackAnalysis::initializeHists(art::ServiceHandle<art::TFileService>&
// Make a directory for these histograms
art::TFileDirectory dir = tfs->mkdir(dirName.c_str());

fHitsByWire[0] = dir.make<TH1D>("HitsByWire0", ";Wire #", fGeometry->Nwires(0), 0., fGeometry->Nwires(0));
fHitsByWire[1] = dir.make<TH1D>("HitsByWire1", ";Wire #", fGeometry->Nwires(1), 0., fGeometry->Nwires(1));
fHitsByWire[2] = dir.make<TH1D>("HitsByWire2", ";Wire #", fGeometry->Nwires(2), 0., fGeometry->Nwires(2));
auto const n_wires_0 = fGeometry->Nwires(geo::PlaneID{0, 0, 0});
auto const n_wires_1 = fGeometry->Nwires(geo::PlaneID{0, 0, 1});
auto const n_wires_2 = fGeometry->Nwires(geo::PlaneID{0, 0, 2});
fHitsByWire[0] = dir.make<TH1D>("HitsByWire0", ";Wire #", n_wires_0, 0., n_wires_0);
fHitsByWire[1] = dir.make<TH1D>("HitsByWire1", ";Wire #", n_wires_1, 0., n_wires_1);
fHitsByWire[2] = dir.make<TH1D>("HitsByWire2", ";Wire #", n_wires_2, 0., n_wires_2);

fPulseHVsWidth[0] = dir.make<TH2D>("PHVsWidth0", ";PH;Width", 100, 0., 100., 100, 0., 20.);
fPulseHVsWidth[1] = dir.make<TH2D>("PHVsWidth1", ";PH;Width", 100, 0., 100., 100, 0., 20.);
Expand Down
4 changes: 2 additions & 2 deletions icaruscode/Analysis/trigger/details/CathodeCrossingUtils.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ icarus::CathodeDesc_t icarus::findTPCcathode

return {
findCathodeCenter(*pCryo) // center
, -(pCryo->TPC(0).DriftDir<geo::Vector_t>()) // normal
, -(pCryo->TPC(0).DriftDir()) // normal
};

} // icarus::findTPCcathode()
Expand All @@ -43,7 +43,7 @@ geo::Point_t icarus::findCathodeCenter(geo::CryostatGeo const& cryo) {
geo::vect::MiddlePointAccumulator cathodePos;

for (geo::TPCGeo const& TPC: cryo.IterateTPCs())
cathodePos.add(TPC.GetCathodeCenter<geo::Point_t>());
cathodePos.add(TPC.GetCathodeCenter());

return cathodePos.middlePoint();

Expand Down
8 changes: 4 additions & 4 deletions icaruscode/CRT/CRTAutoVeto_module.cc
Original file line number Diff line number Diff line change
Expand Up @@ -285,8 +285,8 @@ void CRTAutoVeto::analyze(art::Event const& ev)

bool CRTAutoVeto::IsAV(TVector3 const& point){

geo::CryostatGeo const& cryo0 = fGeoService->Cryostat(0);
geo::CryostatGeo const& cryo1 = fGeoService->Cryostat(1);
geo::CryostatGeo const& cryo0 = fGeoService->Cryostat(geo::CryostatID{0});
geo::CryostatGeo const& cryo1 = fGeoService->Cryostat(geo::CryostatID{1});
geo::TPCGeo const& tpc00 = cryo0.TPC(0);
geo::TPCGeo const& tpc01 = cryo0.TPC(1);
geo::TPCGeo const& tpc10 = cryo1.TPC(0);
Expand All @@ -303,8 +303,8 @@ bool CRTAutoVeto::IsAV(TVector3 const& point){

bool CRTAutoVeto::IsFV(TVector3 const& point) {

geo::CryostatGeo const& cryo0 = fGeoService->Cryostat(0);
geo::CryostatGeo const& cryo1 = fGeoService->Cryostat(1);
geo::CryostatGeo const& cryo0 = fGeoService->Cryostat(geo::CryostatID{0});
geo::CryostatGeo const& cryo1 = fGeoService->Cryostat(geo::CryostatID{1});
geo::TPCGeo const& tpc00 = cryo0.TPC(0);
geo::TPCGeo const& tpc01 = cryo0.TPC(1);
geo::TPCGeo const& tpc10 = cryo1.TPC(0);
Expand Down
28 changes: 5 additions & 23 deletions icaruscode/CRT/CRTChannelMapAlg.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ namespace geo {

//----------------------------------------------------------------------------
uint32_t CRTChannelMapAlg::PositionToAuxDetChannel(
double const worldLoc[3],
geo::Point_t const& worldLoc,
std::vector<geo::AuxDetGeo> const& auxDets,
size_t& ad,
size_t& sv) const {
Expand All @@ -248,12 +248,6 @@ namespace geo {
sv = this->NearestSensitiveAuxDet(worldLoc, auxDets, ad);


// Get the origin of the sensitive volume in the world coordinate system
double svOrigin[3] = {0, 0, 0};
double localOrigin[3] = {0, 0, 0};

auxDets[ad].SensitiveVolume(sv).LocalToWorld(localOrigin, svOrigin);
// std::cout <<"ad: " << ad << " ,x: "<< svOrigin[0] << " ,y: " << svOrigin[1] << " ,z: "<< svOrigin[2] << std::endl;
// std::cout << ad << "\t"<< auxDets[ad].TotalVolume()->GetName() << std::endl;
// for (auto& adtoname : fADGeoToName) std::cout << "ad: "<<adtoname.first << " | volname: " << adtoname.second<<std::endl;
// Check to see which AuxDet this position corresponds to
Expand Down Expand Up @@ -294,13 +288,10 @@ namespace geo {
}

//----------------------------------------------------------------------------
const TVector3 CRTChannelMapAlg::AuxDetChannelToPosition(
uint32_t const& channel,
geo::Point_t CRTChannelMapAlg::AuxDetChannelToPosition(
uint32_t const channel,
std::string const& auxDetName,
std::vector<geo::AuxDetGeo> const& auxDets) const {
double x = 0;
double y = 0;
double z = 0;

// Figure out which detector we are in
size_t ad = UINT_MAX;
Expand All @@ -324,23 +315,14 @@ namespace geo {
// Loop over the vector of channel and sensitive volumes to determine the
// sensitive volume for this channel. Then get the origin of the sensitive
// volume in the world coordinate system.
double svOrigin[3] = {0, 0, 0};
double localOrigin[3] = {0, 0, 0};
for (auto csv : csvItr->second) {
if (csv.first == channel) {
// Get the center of the sensitive volume for this channel
auxDets[ad].SensitiveVolume(csv.second).LocalToWorld(localOrigin,
svOrigin);

x = svOrigin[0];
y = svOrigin[1];
z = svOrigin[2];

break;
return auxDets[ad].SensitiveVolume(csv.second).GetCenter();
}
}

return TVector3(x, y, z);
return {};
}

} // namespace crt
Expand Down
6 changes: 3 additions & 3 deletions icaruscode/CRT/CRTChannelMapAlg.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@ namespace geo{
void Uninitialize() override;

uint32_t PositionToAuxDetChannel(
double const worldLoc[3],
geo::Point_t const& worldLoc,
std::vector<geo::AuxDetGeo> const& auxDets,
size_t& ad,
size_t& sv) const override;

const TVector3 AuxDetChannelToPosition(
uint32_t const& channel,
geo::Point_t AuxDetChannelToPosition(
uint32_t channel,
std::string const& auxDetName,
std::vector<geo::AuxDetGeo> const& auxDets) const override;

Expand Down
14 changes: 6 additions & 8 deletions icaruscode/CRT/CRTGeoObjectSorter.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -59,17 +59,15 @@ namespace geo{
// Define sort order for AuxDets in co-ordinate system

static bool CRTIncreaseX(const AuxDetGeo& ad1, const AuxDetGeo& ad2) {
double xyz1[3] = {0.};
double xyz2[3] = {0.};
ad1.GetCenter(xyz1); ad2.GetCenter(xyz2);
return xyz1[0] < xyz2[0];
auto const xyz1 = ad1.GetCenter();
auto const xyz2 = ad2.GetCenter();
return xyz1.X() < xyz2.X();
}

static bool CRTDecreaseY(const AuxDetGeo& ad1, const AuxDetGeo& ad2) {
double xyz1[3] = {0.};
double xyz2[3] = {0.};
ad1.GetCenter(xyz1); ad2.GetCenter(xyz2);
return xyz1[1] > xyz2[1];
auto const xyz1 = ad1.GetCenter();
auto const xyz2 = ad2.GetCenter();
return xyz1.Y() > xyz2.Y();
}

static bool CRTIncreaseZ(const AuxDetGeo& ad1, const AuxDetGeo& ad2) {
Expand Down