7 #ifndef FP420NumberingScheme_h
8 #define FP420NumberingScheme_h
20 virtual unsigned int getUnitID(
const G4Step* aStep)
const;
24 virtual void detectorLevel(
const G4Step*,
int&,
int*, G4String*)
const;
30 static void unpackFP420Index(
const unsigned int& idx,
int& det,
int& zside,
int& station,
int& superplane);
37 static unsigned packMYIndex(
int rn0,
int pn0,
int sn0,
int det,
int zside,
int sector,
int zmodule) {
38 int zScale = (rn0 - 1);
39 int sScale = zScale * (pn0 - 1);
40 int dScale = sScale * (sn0 - 1);
42 unsigned int intindex = dScale * (det - 1) + sScale * (sector - 1) + zScale * (zmodule - 1) + zside;
47 static void unpackMYIndex(
const int& idx,
int rn0,
int pn0,
int sn0,
int& det,
int& zside,
int& sector,
int& zmodule) {
48 int zScale = (rn0 - 1), sScale = (rn0 - 1) * (pn0 - 1), dScale = (rn0 - 1) * (pn0 - 1) * (sn0 - 1);
50 det = (idx - 1) / dScale + 1;
51 sector = (idx - 1 - dScale * (det - 1)) / sScale + 1;
52 zmodule = (idx - 1 - dScale * (det - 1) - sScale * (sector - 1)) / zScale + 1;
53 zside = idx - dScale * (det - 1) - sScale * (sector - 1) - zScale * (zmodule - 1);
58 int layerIndex = 1,
b;
59 float a = (zside + 1) / 2.;
64 if (zside > (rn0 - 1) || zside < 1)
72 if (zside > (rn0 - 1) || zside < 1) {
74 int layerIndex = 1,
b;
75 float a = (zside + 1) / 2.;
80 copyIndex = zside / 2;
82 copyIndex = (zside + 1) / 2;
91 if (zside > (rn0 - 1) || zside < 1)
93 if (zside == 1 || zside == 2)
105 int zside, zsidereal;
106 if (zsideinorder < 0) {
108 }
else if (zsideinorder < 4) {
109 zside = 2 * zsideinorder - 1;
110 }
else if (zsideinorder < 7) {
111 zside = 2 * zsideinorder - 6;
125 if (zside == 4 || zside == 5)
static int unpackCopyIndex(int rn0, int zside)
virtual int detectorLevel(const G4Step *) const
static int realzside(int rn0, int zsideinorder)
static void unpackFP420Index(const unsigned int &idx, int &det, int &zside, int &station, int &superplane)
virtual ~FP420NumberingScheme()
static int unpackLayerIndex(int rn0, int zside)
static void unpackMYIndex(const int &idx, int rn0, int pn0, int sn0, int &det, int &zside, int §or, int &zmodule)
static unsigned packMYIndex(int rn0, int pn0, int sn0, int det, int zside, int sector, int zmodule)
virtual unsigned int getUnitID(const G4Step *aStep) const
static unsigned int packFP420Index(int det, int zside, int station, int superplane)
static int unpackOrientation(int rn0, int zside)