Skip to content

Commit

Permalink
split modules
Browse files Browse the repository at this point in the history
  • Loading branch information
bfonta authored and bfontana committed Jan 21, 2021
1 parent e06c4d1 commit f74167d
Show file tree
Hide file tree
Showing 91 changed files with 2,948 additions and 3,074 deletions.
2 changes: 1 addition & 1 deletion .clang-format
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
macs -nw 2 ---
---
Language: Cpp
BasedOnStyle: Google
ColumnLimit: 120
Expand Down
118 changes: 64 additions & 54 deletions CUDADataFormats/HGCal/interface/HGCConditions.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,34 @@
#define CUDADataFormats_HGCal_HGCConditions_h

class HeterogeneousHGCSiliconDetId {
public:
constexpr HeterogeneousHGCSiliconDetId(uint32_t id): id_(id) {}
constexpr int32_t type() { return (id_ >> kHGCalTypeOffset) & kHGCalTypeMask; }
constexpr int32_t zside() { return (((id_ >> kHGCalZsideOffset) & kHGCalZsideMask) ? -1 : 1); }
constexpr int32_t layer() { return (id_ >> kHGCalLayerOffset) & kHGCalLayerMask; }
public:
constexpr HeterogeneousHGCSiliconDetId(uint32_t id) : id_(id) {}
constexpr int32_t type() { return (id_ >> kHGCalTypeOffset) & kHGCalTypeMask; }
constexpr int32_t zside() { return (((id_ >> kHGCalZsideOffset) & kHGCalZsideMask) ? -1 : 1); }
constexpr int32_t layer() { return (id_ >> kHGCalLayerOffset) & kHGCalLayerMask; }
constexpr int32_t waferUAbs() { return (id_ >> kHGCalWaferUOffset) & kHGCalWaferUMask; }
constexpr int32_t waferVAbs() { return (id_ >> kHGCalWaferVOffset) & kHGCalWaferVMask; }
constexpr int32_t waferU() { return (((id_ >> kHGCalWaferUSignOffset) & kHGCalWaferUSignMask) ? -waferUAbs() : waferUAbs()); }
constexpr int32_t waferV() { return (((id_ >> kHGCalWaferVSignOffset) & kHGCalWaferVSignMask) ? -waferVAbs() : waferVAbs()); }
constexpr int32_t waferX() { return (-2 * waferU() + waferV()); }
constexpr int32_t waferY() { return (2 * waferV()); }
constexpr int32_t cellU() { return (id_ >> kHGCalCellUOffset) & kHGCalCellUMask; }
constexpr int32_t cellV() { return (id_ >> kHGCalCellVOffset) & kHGCalCellVMask; }
constexpr int32_t nCellsSide(){ return (type() == HGCalFine) ? HGCalFineN : HGCalCoarseN; }
constexpr int32_t cellX() { const int32_t N = nCellsSide(); return (3 * (cellV() - N) + 2); }
constexpr int32_t cellY() { const int32_t N = nCellsSide(); return (2 * cellU() - (N + cellV())); }

private:
constexpr int32_t waferU() {
return (((id_ >> kHGCalWaferUSignOffset) & kHGCalWaferUSignMask) ? -waferUAbs() : waferUAbs());
}
constexpr int32_t waferV() {
return (((id_ >> kHGCalWaferVSignOffset) & kHGCalWaferVSignMask) ? -waferVAbs() : waferVAbs());
}
constexpr int32_t waferX() { return (-2 * waferU() + waferV()); }
constexpr int32_t waferY() { return (2 * waferV()); }
constexpr int32_t cellU() { return (id_ >> kHGCalCellUOffset) & kHGCalCellUMask; }
constexpr int32_t cellV() { return (id_ >> kHGCalCellVOffset) & kHGCalCellVMask; }
constexpr int32_t nCellsSide() { return (type() == HGCalFine) ? HGCalFineN : HGCalCoarseN; }
constexpr int32_t cellX() {
const int32_t N = nCellsSide();
return (3 * (cellV() - N) + 2);
}
constexpr int32_t cellY() {
const int32_t N = nCellsSide();
return (2 * cellU() - (N + cellV()));
}

private:
uint32_t id_;
enum waferType { HGCalFine = 0, HGCalCoarseThin = 1, HGCalCoarseThick = 2 };
static const int32_t HGCalFineN = 12;
Expand All @@ -45,13 +55,13 @@ class HeterogeneousHGCSiliconDetId {
};

class HeterogeneousHGCScintillatorDetId {
public:
constexpr HeterogeneousHGCScintillatorDetId(uint32_t id): id_(id) {}
public:
constexpr HeterogeneousHGCScintillatorDetId(uint32_t id) : id_(id) {}
constexpr int type() { return (id_ >> kHGCalTypeOffset) & kHGCalTypeMask; }
constexpr int zside() const { return (((id_ >> kHGCalZsideOffset) & kHGCalZsideMask) ? -1 : 1); }
constexpr int layer() const { return (id_ >> kHGCalLayerOffset) & kHGCalLayerMask; }

private:
private:
uint32_t id_;
uint32_t kHGCalPhiOffset = 0;
uint32_t kHGCalPhiMask = 0x1FF;
Expand All @@ -69,24 +79,24 @@ class HeterogeneousHGCScintillatorDetId {

namespace hgcal_conditions {
namespace parameters {
enum class HeterogeneousHGCalEEParametersType {Double, Int32_t};
enum class HeterogeneousHGCalHEFParametersType {Double, Int32_t};
enum class HeterogeneousHGCalHEBParametersType {Double, Int32_t};
enum class HeterogeneousHGCalEEParametersType { Double, Int32_t };
enum class HeterogeneousHGCalHEFParametersType { Double, Int32_t };
enum class HeterogeneousHGCalHEBParametersType { Double, Int32_t };

const std::vector<HeterogeneousHGCalEEParametersType> typesEE = { HeterogeneousHGCalEEParametersType::Double,
HeterogeneousHGCalEEParametersType::Double,
HeterogeneousHGCalEEParametersType::Double,
HeterogeneousHGCalEEParametersType::Double,
HeterogeneousHGCalEEParametersType::Int32_t };
const std::vector<HeterogeneousHGCalEEParametersType> typesEE = {HeterogeneousHGCalEEParametersType::Double,
HeterogeneousHGCalEEParametersType::Double,
HeterogeneousHGCalEEParametersType::Double,
HeterogeneousHGCalEEParametersType::Double,
HeterogeneousHGCalEEParametersType::Int32_t};

const std::vector<HeterogeneousHGCalHEFParametersType> typesHEF = { HeterogeneousHGCalHEFParametersType::Double,
HeterogeneousHGCalHEFParametersType::Double,
HeterogeneousHGCalHEFParametersType::Double,
HeterogeneousHGCalHEFParametersType::Double,
HeterogeneousHGCalHEFParametersType::Int32_t };
const std::vector<HeterogeneousHGCalHEFParametersType> typesHEF = {HeterogeneousHGCalHEFParametersType::Double,
HeterogeneousHGCalHEFParametersType::Double,
HeterogeneousHGCalHEFParametersType::Double,
HeterogeneousHGCalHEFParametersType::Double,
HeterogeneousHGCalHEFParametersType::Int32_t};

const std::vector<HeterogeneousHGCalHEBParametersType> typesHEB = { HeterogeneousHGCalHEBParametersType::Double,
HeterogeneousHGCalHEBParametersType::Int32_t };
const std::vector<HeterogeneousHGCalHEBParametersType> typesHEB = {HeterogeneousHGCalHEBParametersType::Double,
HeterogeneousHGCalHEBParametersType::Int32_t};

class HeterogeneousHGCalEEParameters {
public:
Expand Down Expand Up @@ -114,25 +124,25 @@ namespace hgcal_conditions {
int32_t *testI_;
};

} //namespace parameters
} //namespace parameters

namespace positions {

enum class HeterogeneousHGCalPositionsType {Float, Int32_t, Uint32_t};
const std::vector<HeterogeneousHGCalPositionsType> types = { HeterogeneousHGCalPositionsType::Float,
HeterogeneousHGCalPositionsType::Float,
HeterogeneousHGCalPositionsType::Float,
HeterogeneousHGCalPositionsType::Int32_t,
HeterogeneousHGCalPositionsType::Int32_t,
HeterogeneousHGCalPositionsType::Int32_t,
HeterogeneousHGCalPositionsType::Uint32_t };
enum class HeterogeneousHGCalPositionsType { Float, Int32_t, Uint32_t };

const std::vector<HeterogeneousHGCalPositionsType> types = {HeterogeneousHGCalPositionsType::Float,
HeterogeneousHGCalPositionsType::Float,
HeterogeneousHGCalPositionsType::Float,
HeterogeneousHGCalPositionsType::Int32_t,
HeterogeneousHGCalPositionsType::Int32_t,
HeterogeneousHGCalPositionsType::Int32_t,
HeterogeneousHGCalPositionsType::Uint32_t};

struct HGCalPositionsMapping {
std::vector<float> zLayer; //z position per layer
std::vector<int32_t> nCellsLayer; //#cells per layer
std::vector<int32_t> nCellsWaferUChunk; //#cells per U wafer (each in turn including all V wafers)
std::vector<int32_t> nCellsHexagon; //#cells per V wafer
std::vector<float> zLayer; //z position per layer
std::vector<int32_t> nCellsLayer; //#cells per layer
std::vector<int32_t> nCellsWaferUChunk; //#cells per U wafer (each in turn including all V wafers)
std::vector<int32_t> nCellsHexagon; //#cells per V wafer
std::vector<uint32_t> detid;
//variables required for calculating the positions (x,y) from the detid in the GPU
float waferSize;
Expand Down Expand Up @@ -162,9 +172,9 @@ namespace hgcal_conditions {
int32_t waferMax;
int32_t waferMin;
};
} //namespace positions

} //namespace positions

struct HeterogeneousEEConditionsESProduct {
parameters::HeterogeneousHGCalEEParameters params;
};
Expand All @@ -182,6 +192,6 @@ namespace hgcal_conditions {
size_t nelems_posmap;
};

} //namespace conditions
} // namespace hgcal_conditions

#endif //CUDADataFormats_HGCal_HGCConditions_h
#endif //CUDADataFormats_HGCal_HGCConditions_h
28 changes: 20 additions & 8 deletions CUDADataFormats/HGCal/interface/HGCRecHitSoA.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,26 @@
#define CUDADataFormats_HGCal_HGCRecHitSoA_h

class HGCRecHitSoA {
public:
float *energy_; //calibrated energy of the rechit
float *time_; //time jitter of the UncalibRecHit
float *timeError_; //time resolution
uint32_t *id_; //rechit detId
uint32_t *flagBits_; //rechit flags describing its status (DataFormats/HGCRecHit/interface/HGCRecHit.h)
uint8_t *son_; //signal over noise
int nbytes_; //number of bytes of the SoA
public:
float *energy_; //calibrated energy of the rechit
float *time_; //time jitter of the UncalibRecHit
float *timeError_; //time resolution
uint32_t *id_; //rechit detId
uint32_t *flagBits_; //rechit flags describing its status (DataFormats/HGCRecHit/interface/HGCRecHit.h)
uint8_t *son_; //signal over noise

uint32_t nbytes_; //number of bytes of the SoA
uint32_t nhits_; //number of hits stored in the SoA
uint32_t stride_; //stride of memory block (used for warp alignment, slighlty larger than 'nhits_')
};

namespace memory {
namespace npointers {
constexpr unsigned int float_hgcrechits_soa = 3; //number of float pointers in the rechits SoA
constexpr unsigned int uint32_hgcrechits_soa = 2; //number of uint32_t pointers in the rechits SoA
constexpr unsigned int uint8_hgcrechits_soa = 1; //number of uint8_t pointers in the rechits SoA
constexpr unsigned int ntypes_hgcrechits_soa = 3; //number of different pointer types in the rechits SoA
} // namespace npointers
} // namespace memory

#endif
34 changes: 24 additions & 10 deletions CUDADataFormats/HGCal/interface/HGCUncalibratedRecHitSoA.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,30 @@

class HGCUncalibratedRecHitSoA {
public:
float *amplitude_; //uncalib rechit amplitude, i.e., the average number of MIPs
float *pedestal_; //reconstructed pedestal
float *jitter_; //reconstructed time jitter
float *chi2_; //chi2 of the pulse
float *OOTamplitude_; //out-of-time reconstructed amplitude
float *OOTchi2_; //out-of-time chi2
uint32_t *flags_; //uncalibrechit flags describing its status (DataFormats/HGCRecHit/interface/HGCUncalibratedRecHit.h); to be propagated to the rechits
uint32_t *aux_; //aux word; first 8 bits contain time (jitter) error
uint32_t *id_; //uncalibrechit detector id
int nbytes_; //number of bytes of the SoA
float *amplitude_; //uncalib rechit amplitude, i.e., the average number of MIPs
float *pedestal_; //reconstructed pedestal
float *jitter_; //reconstructed time jitter
float *chi2_; //chi2 of the pulse
float *OOTamplitude_; //out-of-time reconstructed amplitude
float *OOTchi2_; //out-of-time chi2
uint32_t *
flags_; //uncalibrechit flags describing its status (DataFormats/HGCRecHit/interface/HGCUncalibratedRecHit.h); to be propagated to the rechits
uint32_t *aux_; //aux word; first 8 bits contain time (jitter) error
uint32_t *id_; //uncalibrechit detector id

uint32_t nbytes_; //number of bytes of the SoA
uint32_t nhits_; //number of hits stored in the SoA
uint32_t stride_; //stride of memory block (used for warp alignment, slighlty larger than 'nhits_')
};

namespace memory {
namespace npointers {
constexpr unsigned int float_hgcuncalibrechits_soa = 6; //number of float pointers in the uncalibrated rechits SoA
constexpr unsigned int uint32_hgcuncalibrechits_soa =
3; //number of uint32_t pointers in the uncalibrated rechits SoA
constexpr unsigned int ntypes_hgcuncalibrechits_soa =
2; //number of different pointer types in the uncalibrated rechits SoA
} // namespace npointers
} // namespace memory

#endif
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,23 @@
//maximum sizes for SoA's arrays holding configuration data ("constants")
namespace maxsizes_constants {
//EE
constexpr size_t ee_fCPerMIP = 3; //number of elements pointed by hgcEE_fCPerMIP_
constexpr size_t ee_cce = 3; //number of elements pointed by hgcEE_cce_
constexpr size_t ee_noise_fC = 3; //number of elements pointed by hgcEE_noise_fC_
constexpr size_t ee_rcorr = 3; //number of elements pointed by rcorr_
constexpr size_t ee_weights = 51; //number of elements posize_ted by weights_
constexpr size_t ee_fCPerMIP = 3; //number of elements pointed by hgcEE_fCPerMIP_
constexpr size_t ee_cce = 3; //number of elements pointed by hgcEE_cce_
constexpr size_t ee_noise_fC = 3; //number of elements pointed by hgcEE_noise_fC_
constexpr size_t ee_rcorr = 3; //number of elements pointed by rcorr_
constexpr size_t ee_weights = 51; //number of elements posize_ted by weights_
//HEF
constexpr size_t hef_fCPerMIP = 3; //number of elements pointed by hgcEE_fCPerMIP_
constexpr size_t hef_cce = 3; //number of elements pointed by hgcEE_cce_
constexpr size_t hef_noise_fC = 3; //number of elements pointed by hgcEE_noise_fC_
constexpr size_t hef_rcorr = 3; //number of elements pointed by rcorr_
constexpr size_t hef_weights = 51; //number of elements pointed by weights_
constexpr size_t hef_fCPerMIP = 3; //number of elements pointed by hgcEE_fCPerMIP_
constexpr size_t hef_cce = 3; //number of elements pointed by hgcEE_cce_
constexpr size_t hef_noise_fC = 3; //number of elements pointed by hgcEE_noise_fC_
constexpr size_t hef_rcorr = 3; //number of elements pointed by rcorr_
constexpr size_t hef_weights = 51; //number of elements pointed by weights_
//HEB
constexpr size_t heb_weights = 51; //number of elements pointed by weights_
}
constexpr size_t heb_weights = 51; //number of elements pointed by weights_
} // namespace maxsizes_constants

class HGCConstantVectorData {
public:
public:
std::vector<double> fCPerMIP_;
std::vector<double> cce_;
std::vector<double> noise_fC_;
Expand All @@ -31,45 +31,45 @@ class HGCConstantVectorData {
};

class HGCeeUncalibratedRecHitConstantData {
public:
double fCPerMIP_[maxsizes_constants::ee_fCPerMIP]; //femto coloumb to MIP conversion; one value per sensor thickness
double cce_[maxsizes_constants::ee_cce]; //charge collection efficiency, one value per sensor thickness
double noise_fC_[maxsizes_constants::ee_noise_fC]; //noise, one value per sensor thickness
double rcorr_[maxsizes_constants::ee_rcorr]; //thickness correction
double weights_[maxsizes_constants::ee_weights]; //energy weights to recover rechit energy deposited in the absorber
public:
double fCPerMIP_[maxsizes_constants::ee_fCPerMIP]; //femto coloumb to MIP conversion; one value per sensor thickness
double cce_[maxsizes_constants::ee_cce]; //charge collection efficiency, one value per sensor thickness
double noise_fC_[maxsizes_constants::ee_noise_fC]; //noise, one value per sensor thickness
double rcorr_[maxsizes_constants::ee_rcorr]; //thickness correction
double weights_[maxsizes_constants::ee_weights]; //energy weights to recover rechit energy deposited in the absorber

double keV2DIGI_; //energy to femto coloumb conversion: 1000 eV/3.62 (eV per e) / 6.24150934e3 (e per fC)
double uncalib2GeV_; //sets the ADC; obtained by dividing 1e-6 by hgcEE_keV2DIGI_
float xmin_; //used for computing the time resolution error
float xmax_; //used for computing the time resolution error
float aterm_; //used for computing the time resolution error
float cterm_; //used for computing the time resolution error
double keV2DIGI_; //energy to femto coloumb conversion: 1000 eV/3.62 (eV per e) / 6.24150934e3 (e per fC)
double uncalib2GeV_; //sets the ADC; obtained by dividing 1e-6 by hgcEE_keV2DIGI_
float xmin_; //used for computing the time resolution error
float xmax_; //used for computing the time resolution error
float aterm_; //used for computing the time resolution error
float cterm_; //used for computing the time resolution error
};

class HGChefUncalibratedRecHitConstantData {
public:
double fCPerMIP_[maxsizes_constants::hef_fCPerMIP]; //femto coloumb to MIP conversion; one value per sensor thickness
double cce_[maxsizes_constants::hef_cce]; //charge collection efficiency, one value per sensor thickness
double noise_fC_[maxsizes_constants::hef_noise_fC]; //noise, one value per sensor thickness
double rcorr_[maxsizes_constants::hef_rcorr]; //thickness correction
double weights_[maxsizes_constants::hef_weights]; //energy weights to recover rechit energy deposited in the absorber
public:
double fCPerMIP_[maxsizes_constants::hef_fCPerMIP]; //femto coloumb to MIP conversion; one value per sensor thickness
double cce_[maxsizes_constants::hef_cce]; //charge collection efficiency, one value per sensor thickness
double noise_fC_[maxsizes_constants::hef_noise_fC]; //noise, one value per sensor thickness
double rcorr_[maxsizes_constants::hef_rcorr]; //thickness correction
double weights_[maxsizes_constants::hef_weights]; //energy weights to recover rechit energy deposited in the absorber

double keV2DIGI_; //energy to femto coloumb conversion: 1000 eV/3.62 (eV per e) / 6.24150934e3 (e per fC)
double uncalib2GeV_; //sets the ADC; obtained by dividing 1e-6 by hgcHEF_keV2DIGI_
float xmin_; //used for computing the time resolution error
float xmax_; //used for computing the time resolution error
float aterm_; //used for computing the time resolution error
float cterm_; //used for computing the time resolution error
double keV2DIGI_; //energy to femto coloumb conversion: 1000 eV/3.62 (eV per e) / 6.24150934e3 (e per fC)
double uncalib2GeV_; //sets the ADC; obtained by dividing 1e-6 by hgcHEF_keV2DIGI_
float xmin_; //used for computing the time resolution error
float xmax_; //used for computing the time resolution error
float aterm_; //used for computing the time resolution error
float cterm_; //used for computing the time resolution error
int32_t layerOffset_; //layer offset relative to layer#1 of the EE subsetector
};

class HGChebUncalibratedRecHitConstantData {
public:
double weights_[maxsizes_constants::heb_weights]; //energy weights to recover rechit energy deposited in the absorber
public:
double weights_[maxsizes_constants::heb_weights]; //energy weights to recover rechit energy deposited in the absorber

double keV2DIGI_; //energy to femto coloumb conversion: 1000 eV/3.62 (eV per e) / 6.24150934e3 (e per fC)
double uncalib2GeV_; //sets the ADC; obtained by dividing 1e-6 by hgcHEB_keV2DIGI_
double noise_MIP_; //noise
double keV2DIGI_; //energy to femto coloumb conversion: 1000 eV/3.62 (eV per e) / 6.24150934e3 (e per fC)
double uncalib2GeV_; //sets the ADC; obtained by dividing 1e-6 by hgcHEB_keV2DIGI_
double noise_MIP_; //noise
uint32_t layerOffset_; //layer offset relative to layer#1 of the EE subsetector
};

Expand Down
Loading

0 comments on commit f74167d

Please sign in to comment.