5#ifndef TRIGINDETPATTRECOTOOLS_TRIGTRACKSEEDGENERATOR_H
6#define TRIGINDETPATTRECOTOOLS_TRIGTRACKSEEDGENERATOR_H
38 return p1->m_pSP->z()<p2->m_pSP->z();
44 return p1->m_pSP->r()<p2->m_pSP->r();
50 return p1->m_pSP->r()>p2->m_pSP->r();
56 return z < p->m_pSP->z();
62 return p->m_pSP->z() <
z;
68 return r < p->m_pSP->r();
74 return r < p->m_pSP->r();
80 return p->m_pSP->r() <
r;
86 return p->m_pSP->r() <
r;
92 std::vector<const INDEXED_SP*> d;
100 if(nPhiSlices == 2) {
109 for(
int phiIdx=0;phiIdx<nPhiSlices;phiIdx++) {
120 for(
int i=0;i<3;i++) {
129 for(
int i=0;i<3;i++) {
148 for(
int i=0;i<3;i++) {
156 if((*it).empty())
continue;
161 if((*it).empty())
continue;
169 if((*it).empty())
continue;
177 if((*it).empty())
continue;
208 m_layers[layerId].addSpacePoint(phiIdx, p);
212 for(std::vector<L_PHI_SECTOR>::iterator it=
m_layers.begin();it!=
m_layers.end();++it) {
213 if((*it).m_nSP==0)
continue;
220 for(std::vector<L_PHI_SECTOR>::iterator it=
m_layers.begin();it!=
m_layers.end();++it,layerId++) {
221 if((*it).m_nSP==0)
continue;
222 (*it).sortSpacePoints(layerGeometry[layerId].m_type==0);
228 for(std::vector<L_PHI_SECTOR>::iterator it=
m_layers.begin();it!=
m_layers.end();++it,layerId++) {
229 if((*it).m_nSP==0)
continue;
230 (*it).sortSpacePoints(layerGeometry[layerId].m_type==0, layerGeometry[layerId].m_refCoord > 0);
242InternalSoA() :
m_spi(0),
m_spo(0),
m_r(0),
m_u(0),
m_v(0),
m_t(0),
m_ti(0),
m_to(0),
m_tCov(0),
m_sorted_sp(0),
280 m_r =
new double[spSize];
281 m_u =
new double[spSize];
282 m_v =
new double[spSize];
283 m_t =
new double[spSize];
284 m_ti =
new double[spSize];
285 m_to =
new double[spSize];
286 m_tCov =
new double[spSize];
308typedef std::pair<std::vector<const INDEXED_SP*>::const_iterator, std::vector<const INDEXED_SP*>::const_iterator>
SP_RANGE;
323 void getSeeds(std::vector<TrigInDetTriplet>&);
struct InternalSoA INTERNAL_SOA
struct LPhiSector L_PHI_SECTOR
struct IndexedSP INDEXED_SP
class TrigTrackSeedGenerator TRIG_TRACK_SEED_GENERATOR
struct LPhi_Storage L_PHI_STORAGE
std::pair< std::vector< const INDEXED_SP * >::const_iterator, std::vector< const INDEXED_SP * >::const_iterator > SP_RANGE
Describes the API of the Region of Ineterest geometry.
double m_maxDeltaRadiusConf
TrigTrackSeedGenerator & operator=(const TrigTrackSeedGenerator &)=delete
const TrigCombinatorialSettings & m_settings
void loadSpacePoints(const std::vector< TrigSiSpacePointBase > &)
std::vector< float > m_maxTau
void createTripletsNew(const TrigSiSpacePointBase *, int, int, std::vector< TrigInDetTriplet > &, const IRoiDescriptor *)
void storeTriplets(std::vector< TrigInDetTriplet > &)
TrigTrackSeedGenerator(const TrigTrackSeedGenerator &)=delete
std::vector< float > m_minTau
bool getSpacepointRange(int, const std::vector< const INDEXED_SP * > &, SP_RANGE &)
void createSeeds(const IRoiDescriptor *)
void getSeeds(std::vector< TrigInDetTriplet > &)
std::vector< INDEXED_SP > m_spStorage
void createTriplets(const TrigSiSpacePointBase *, int, int, std::vector< TrigInDetTriplet > &, const IRoiDescriptor *)
int processSpacepointRangeZv(const INDEXED_SP *, bool, const SP_RANGE &, bool, const float &, const float &)
std::vector< int > m_innerMarkers
std::vector< TrigInDetTriplet > m_triplets
void createConfirmedTriplets(const TrigSiSpacePointBase *, int, int, std::vector< TrigInDetTriplet > &, const IRoiDescriptor *)
TrigTrackSeedGenerator(const TrigCombinatorialSettings &)
~TrigTrackSeedGenerator()
bool validateLayerPairNew(int, int, float, float)
std::vector< int > m_outerMarkers
int processSpacepointRange(int, const INDEXED_SP *, bool, const SP_RANGE &, const IRoiDescriptor *)
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
const TrigSiSpacePointBase * m_pSP
IndexedSP(const TrigSiSpacePointBase *p, int idx)
void set(const TrigSiSpacePointBase *p, int idx)
IndexedSP(const IndexedSP &isp)
const TrigSiSpacePointBase ** m_sorted_sp
const TrigSiSpacePointBase ** m_spo
void resize(const int spSize)
const TrigSiSpacePointBase ** m_spi
bool operator()(const INDEXED_SP *p1, const INDEXED_SP *p2)
bool operator()(const INDEXED_SP *p1, const INDEXED_SP *p2)
bool operator()(const INDEXED_SP *p1, const INDEXED_SP *p2)
bool operator()(const INDEXED_SP *const &p, float r) const
bool operator()(float r, const INDEXED_SP *const &p) const
bool operator()(float z, const INDEXED_SP *const &p) const
bool operator()(float r, const INDEXED_SP *const &p) const
bool operator()(const INDEXED_SP *const &p, float r) const
bool operator()(const INDEXED_SP *const &p, float z) const
const LPhiSector & operator=(const LPhiSector &ps)
std::vector< std::vector< const INDEXED_SP * > > m_phiThreeSlices
LPhiSector(int nPhiSlices)
std::vector< int > m_threeIndices[3]
void sortSpacePoints(bool isBarrel)
std::vector< std::vector< const INDEXED_SP * > > m_phiSlices
void addSpacePoint(int phiIndex, const INDEXED_SP *p)
void sortSpacePoints(bool isBarrel, bool isPositive)
LPhiSector(const LPhiSector &ps)
LPhi_Storage(int nPhiSectors, int nLayers)
std::vector< L_PHI_SECTOR > m_layers
void addSpacePoint(int phiIdx, int layerId, const INDEXED_SP *p)
void sortSpacePoints(const std::vector< TrigInDetSiLayer > &layerGeometry)
void sortSpacePoints2(const std::vector< TrigInDetSiLayer > &layerGeometry)