150 if (
input.regions.empty())
153 const int eventNumber =
input.ev.eventAuxiliary().event();
164 std::vector<std::pair<int, int>> layerIdx2layerandSoa;
166 layerIdx2layerandSoa.reserve(
input.layerClusters.size());
167 unsigned int layerIdx = 0;
168 for (
auto const &lc :
input.layerClusters) {
169 if (
input.mask[layerIdx] == 0.) {
171 edm::LogVerbatim(
"PatternRecogntionbyCLUE3D") <<
"Skipping masked clustrer: " << layerIdx;
173 layerIdx2layerandSoa.emplace_back(-1, -1);
177 const auto firstHitDetId = lc.hitsAndFractions()[0].first;
182 layerIdx2layerandSoa.emplace_back(layer,
clusters_[layer].
x.size());
185 float sum_sqr_x = 0.;
186 float sum_sqr_y = 0.;
187 float ref_x = lc.x();
188 float ref_y = lc.y();
189 float invClsize = 1. / lc.hitsAndFractions().size();
190 for (
auto const &hitsAndFractions : lc.hitsAndFractions()) {
192 sum_x +=
point.x() - ref_x;
193 sum_sqr_x += (
point.x() - ref_x) * (
point.x() - ref_x);
194 sum_y +=
point.y() - ref_y;
195 sum_sqr_y += (
point.y() - ref_y) * (
point.y() - ref_y);
202 float radius_x =
sqrt((sum_sqr_x - (sum_x * sum_x) * invClsize) * invClsize);
203 float radius_y =
sqrt((sum_sqr_y - (sum_y * sum_y) * invClsize) * invClsize);
213 clusters_[
layer].layerClusterOriginalIdx.emplace_back(layerIdx++);
218 for (
unsigned int layer = 0; layer <
clusters_.size(); layer++) {
223 unsigned int maxLayer = 2 * lastLayerPerSide - 1;
224 std::vector<int> numberOfClustersPerLayer(maxLayer, 0);
225 for (
unsigned int i = 0;
i <= maxLayer;
i++) {
228 for (
unsigned int i = 0;
i <= maxLayer;
i++) {
234 edm::LogVerbatim(
"PatternRecogntionbyCLUE3D") <<
"Reconstructed " << nTracksters <<
" tracksters" << std::endl;
239 result.resize(nTracksters);
246 for (
unsigned int lc = 0; lc < thisLayer.x.size(); ++lc) {
248 edm::LogVerbatim(
"PatternRecogntionbyCLUE3D") <<
"Trackster " << thisLayer.clusterIndex[lc];
250 if (thisLayer.clusterIndex[lc] >= 0) {
252 edm::LogVerbatim(
"PatternRecogntionbyCLUE3D") <<
" adding lcIdx: " << thisLayer.layerClusterOriginalIdx[lc];
254 result[thisLayer.clusterIndex[lc]].vertices().push_back(thisLayer.layerClusterOriginalIdx[lc]);
255 result[thisLayer.clusterIndex[lc]].vertex_multiplicity().push_back(1);
257 for (
auto [follower_lyrIdx, follower_soaIdx] : thisLayer.followers[lc]) {
258 std::array<unsigned int, 2> edge = {
259 {(
unsigned int)thisLayer.layerClusterOriginalIdx[lc],
260 (
unsigned int)
clusters_[follower_lyrIdx].layerClusterOriginalIdx[follower_soaIdx]}};
261 result[thisLayer.clusterIndex[lc]].edges().push_back(edge);
276 input.layerClustersTime,
283 edm::LogVerbatim(
"PatternRecogntionbyCLUE3D") <<
"Barycenter: " <<
t.barycenter();
286 edm::LogVerbatim(
"PatternRecogntionbyCLUE3D") <<
"Regressed: " <<
t.regressed_energy();
Log< level::Info, true > LogVerbatim
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeomToken_
const int minNumLayerCluster_
void dumpTracksters(const std::vector< std::pair< int, int >> &layerIdx2layerandSoa, const int, const std::vector< Trackster > &) const
void calculateDistanceToHigher(const TILES &, const unsigned int layerId, const std::vector< std::pair< int, int >> &)
std::vector< ClustersOnLayer > clusters_
constexpr std::array< uint8_t, layerIndexSize > layer
static std::string const input
bool getData(T &iHolder) const
void assignPCAtoTracksters(std::vector< Trackster > &, const std::vector< reco::CaloCluster > &, const edm::ValueMap< std::pair< float, float >> &, double, bool energyWeight=true)
hgcal::RecHitTools rhtools_
int findAndAssignTracksters(const TILES &, const std::vector< std::pair< int, int >> &)
void calculateLocalDensity(const TILES &, const unsigned int layerId, const std::vector< std::pair< int, int >> &)
void dumpClusters(const std::vector< std::pair< int, int >> &layerIdx2layerandSoa, const int) const
int sum_x
More diagnostics.
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
void energyRegressionAndID(const std::vector< reco::CaloCluster > &layerClusters, std::vector< Trackster > &result)