1#ifndef BMNGEMSTRIPMODULE_H
2#define BMNGEMSTRIPMODULE_H
7#include "BmnStripData.h"
152 Bool_t onlyStandard =
false,
153 vector<Int_t> segs = {});
167 vector<Int_t> segs = {});
179 Double_t bfield = -1,
180 Bool_t onlyStandard = kFALSE,
181 vector<Int_t> segs = {});
193 Double_t bfield = -1,
194 Bool_t onlyStandard = kFALSE,
195 vector<Int_t> segs = {});
207 Double_t bfield = -1,
208 Bool_t onlyStandard = kFALSE,
209 vector<Int_t> segs = {});
221 Double_t bfield = -1,
222 Bool_t onlyStandard = kFALSE,
223 vector<Int_t> segs = {});
244 StripCluster
MakeCluster(Int_t layer_num, Double_t xcoord, Double_t ycoord, Double_t signal, Double_t radius);
514 std::vector<std::vector<StripCluster>>().swap(
AddedClusters);
vector< Double_t > IntersectionPointsYErrors
vector< Double_t > RealPointsXcenter
vector< Double_t > IntersectionPointsX
void GetANNWindowCenterPoint(Double_t x, Double_t y, Double_t z, Double_t x_out, Double_t y_out, Double_t z_out, Double_t &x_c, Double_t &y_c) const
Double_t FirstTransferGapThickness
vector< Double_t > PseudoIntersections_LowerLayerStripPosition
void ResetPseudoIntersections()
Double_t GetPseudoIntersectionX(Int_t indx)
vector< Int_t > PseudoIntersections_UpperLayerClusterSize
Bool_t AddRealPointFull_ANNStripGenerator_Fdeep(Double_t x, Double_t y, Double_t z, Double_t px, Double_t py, Double_t pz, Double_t signal, Int_t refID, Int_t pdg_code=0, Double_t bfield=-1, Bool_t onlyStandard=kFALSE, vector< Int_t > segs={})
Double_t ZStartModulePosition
void ResetIntersectionPoints()
void CalculateStripHitIntersectionPoints()
BmnMatch GetPseudoIntersectionMatch(Int_t indx)
vector< Double_t > PseudoIntersections_UpperLayerStripPosition
void SetZStartModulePosition(Double_t zpos_module)
BmnMatch GetStripMatchInLayer(Int_t layer_num, Int_t strip_num)
void SetAvalancheRadius(Double_t aval_radius)
Double_t GetIntersectionPoint_UpperLayerSripPosition(Int_t indx)
vector< Double_t > XElectronPos
static void SetANNModelPath(TString path)
vector< Double_t > RealPointsXout
vector< Double_t > IntersectionPoints_LowerLayerStripTotalSignal
UInt_t AvalancheGenerationSeed
vector< vector< StripCluster > > AddedClusters
Double_t GetPseudoIntersection_UpperLayerSripPosition(Int_t indx)
void SetVerbosity(Bool_t verb)
vector< Double_t > RealPointsMC
vector< StripCluster > UpperClusters
Double_t GetIntersectionPoint_LowerLayerSripTotalSignal(Int_t indx)
Double_t MaxClustersPerCm
Double_t GetIntersectionPointX(Int_t indx)
Double_t GetIntersectionPointY(Int_t indx)
vector< StripCluster > LowerClusters
StripCluster GetLowerCluster(Int_t indx)
vector< BmnMatch > IntersectionPointDigitNumberMatches
BmnMatch GetStripDigitNumberMatchInLayer(Int_t layer_num, Int_t strip_num)
Double_t GetPseudoIntersection_UpperLayerSripTotalSignal(Int_t indx)
StripCluster GetLowerCluster_PseudoIntersections(Int_t indx)
BmnGemStripModule & operator=(const BmnGemStripModule &)=delete
vector< Double_t > IntersectionPoints_UpperLayerStripTotalSignal
ElectronDriftDirectionInModule ElectronDriftDirection
Double_t GetModuleThickness()
vector< Int_t > PseudoIntersections_LowerLayerClusterSize
BmnGemStripLayer & GetStripLayer(Int_t num)
vector< Double_t > PseudoIntersections_UpperLayerStripTotalSignal
Bool_t FillGenerationData
Double_t GetIntersectionPointYError(Int_t indx)
vector< Double_t > IntersectionPoints_LowerLayerStripPosition
vector< Double_t > PseudoIntersectionsY
void SetElectronDriftDirection(ElectronDriftDirectionInModule direction)
vector< Double_t > PseudoIntersections_LowerLayerStripTotalSignal
Int_t GetPseudoIntersection_LowerLayerClusterSize(Int_t indx)
vector< Double_t > IntersectionPointsY
Bool_t AddRealPointFull(Double_t x, Double_t y, Double_t z, Double_t px, Double_t py, Double_t pz, Double_t signal, Int_t refID)
Bool_t AddRealPointFull_ANNStripGenerator_MLP_Parallel(Double_t x, Double_t y, Double_t z, Double_t px, Double_t py, Double_t pz, Double_t signal, Int_t refID, Int_t pdg_code=0, Double_t bfield=-1, Bool_t onlyStandard=kFALSE, vector< Int_t > segs={})
Double_t GetPseudoIntersection_LowerLayerSripPosition(Int_t indx)
static void SetUseANNGeneration(Bool_t use)
Int_t GetNIntersectionPoints()
Double_t GetStripSignalInLayer(Int_t layer_num, Int_t strip_num)
StripCluster GetUpperCluster_PseudoIntersections(Int_t indx)
vector< BmnMatch > PseudoIntersectionMatches
vector< Double_t > YElectronPos
vector< Double_t > RealPointsY
void SetAvalancheGenerationSeed(UInt_t seed)
vector< Double_t > IntersectionPoints_UpperLayerStripPosition
Bool_t GetFillGenerationData() const
Bool_t AddRealPointSimple(Double_t x, Double_t y, Double_t z, Double_t px, Double_t py, Double_t pz, Double_t signal, Int_t refID)
void SetFillGenerationData(Bool_t fill)
vector< Int_t > SegmentedChargeDistribution
vector< Double_t > PseudoIntersectionsYErrors
BmnMatch GetIntersectionPointMatch(Int_t indx)
Double_t GetRealPointMC(Int_t indx)
UInt_t GetAvalancheGenerationSeed()
Bool_t SetStripSignalInLayer(Int_t layer_num, Int_t strip_num, Double_t signal)
vector< Double_t > ElectronSignal
Int_t GetNPseudoIntersections()
Bool_t IsPointInsideModule(Double_t x, Double_t y)
vector< Double_t > PseudoIntersectionsX
void SetMaxClustersPerCm(Double_t max_clusters)
static TString GetANNModelPath()
vector< StripCluster > UpperClusters_PseudoIntersections
BmnMatch GetPseudoIntersectionDigitNumberMatch(Int_t indx)
vector< BmnMatch > IntersectionPointMatches
BmnMatch GetIntersectionPointDigitNumberMatch(Int_t indx)
vector< Double_t > RealPointsX
Double_t GetPseudoIntersection_LowerLayerSripTotalSignal(Int_t indx)
Double_t GetPseudoIntersectionXError(Int_t indx)
Bool_t AddRealPointFull_ANNGenerator(Double_t x, Double_t y, Double_t z, Double_t px, Double_t py, Double_t pz, Double_t signal, Int_t refID, Int_t pdg_code, Double_t bfield, Bool_t onlyStandard=false, vector< Int_t > segs={})
Double_t GetMaxClustersPerCm() const
Bool_t AddStripSignalInLayer(Int_t layer_num, Int_t strip_num, Double_t signal)
Double_t GetRealPointY(Int_t indx)
Bool_t AddRealPointFullOne(Double_t x, Double_t y, Double_t z, Double_t px, Double_t py, Double_t pz, Double_t signal, Int_t refID)
Double_t GetNumberOfClusters(Double_t beta, Double_t gamma, Double_t charge, Double_t p0, Double_t p1)
Bool_t SetStripMatchInLayer(Int_t layer_num, Int_t strip_num, BmnMatch mc_match)
static Bool_t GetUseANNGeneration()
void DefineModuleBorders()
Bool_t AddRealPointFull_ANNStripGenerator_MLP_FastStand(Double_t x, Double_t y, Double_t z, Double_t px, Double_t py, Double_t pz, Double_t signal, Int_t refID, Int_t pdg_code=0, Double_t bfield=-1, Bool_t onlyStandard=kFALSE, vector< Int_t > segs={})
vector< Int_t > IntersectionPoints_UpperLayerClusterSize
StripCluster GetUpperCluster(Int_t indx)
Bool_t AddRealPoint(Double_t x, Double_t y, Double_t z, Double_t px, Double_t py, Double_t pz, Double_t signal, Int_t refID)
vector< Double_t > RealPointsYcenter
static Bool_t fUseANNGeneration
Double_t GetPseudoIntersectionY(Int_t indx)
Int_t GetPseudoIntersection_UpperLayerClusterSize(Int_t indx)
Int_t GetIntersectionPoint_LowerLayerClusterSize(Int_t indx)
Double_t GetRealPointYout(Int_t indx)
vector< BmnMatch > PseudoIntersectionDigitNumberMatches
Double_t GetRealPointX(Int_t indx)
vector< Int_t > IntersectionPoints_LowerLayerClusterSize
Double_t GetZStartModulePosition()
vector< Double_t > RealPointsYout
Double_t GetIntersectionPoint_LowerLayerSripPosition(Int_t indx)
static constexpr Double_t kANNMaxThetaAngle
vector< StripCluster > LowerClusters_PseudoIntersections
StripCluster MakeCluster(Int_t layer_num, Double_t xcoord, Double_t ycoord, Double_t signal, Double_t radius)
void ResetElectronPointsAndClusters()
Bool_t IsPointInsideZThickness(Double_t z)
ElectronDriftDirectionInModule GetElectronDriftDirection()
Bool_t SearchIntersectionPoint(Double_t &x, Double_t &y, Double_t strip_pos_layerA, Double_t strip_pos_layerB, Int_t layerA_index, Int_t layerB_index)
Double_t SecondTransferGapThickness
Bool_t AddRealPointFull_ANNStripGenerator_Fdeep_Parallel(Double_t x, Double_t y, Double_t z, Double_t px, Double_t py, Double_t pz, Double_t signal, Int_t refID, Int_t pdg_code=0, Double_t bfield=-1, Bool_t onlyStandard=kFALSE, vector< Int_t > segs={})
Double_t GetIntersectionPointXError(Int_t indx)
Int_t GetNRealPointCenters()
Int_t GetIntersectionPoint_UpperLayerClusterSize(Int_t indx)
Double_t GetPseudoIntersectionYError(Int_t indx)
vector< Double_t > PseudoIntersectionsXErrors
Bool_t AddRealPointFull_ANNStripGenerator_MLP(Double_t x, Double_t y, Double_t z, Double_t px, Double_t py, Double_t pz, Double_t signal, Int_t refID, Int_t pdg_code=0, Double_t bfield=-1, Bool_t onlyStandard=kFALSE, vector< Int_t > segs={})
Double_t GetZPositionRegistered()
BmnGemStripModule(const BmnGemStripModule &)=delete
Double_t GetRealPointXcenter(Int_t indx)
vector< Double_t > IntersectionPointsXErrors
void AddStripLayer(BmnGemStripLayer strip_layer)
Double_t DriftGapThickness
Double_t GetRealPointXout(Int_t indx)
vector< BmnGemStripLayer > StripLayers
Double_t GetRealPointYcenter(Int_t indx)
Double_t GetIntersectionPoint_UpperLayerSripTotalSignal(Int_t indx)
Double_t InductionGapThickness
Bool_t SetStripDigitNumberMatchInLayer(Int_t layer_num, Int_t strip_num, BmnMatch digit_num_match)
virtual ~BmnGemStripModule()
Double_t GetAvalancheRadius()
vector< BmnGemStripLayer > & GetStripLayers()
ElectronDriftDirectionInModule
double beta(double x, double y)
ElectronDriftDirectionInModule
CollPoint(Double_t _x, Double_t _y, Double_t _z)