#include <BscNumberingScheme.h>
Public Member Functions | |
BscNumberingScheme () | |
virtual void | detectorLevel (const G4Step *, int &, int *, G4String *) const |
virtual int | detectorLevel (const G4Step *) const |
virtual unsigned int | getUnitID (const G4Step *aStep) const |
virtual | ~BscNumberingScheme () |
Static Public Member Functions | |
static unsigned int | packBscIndex (int det, int zside, int station) |
static void | unpackBscIndex (const unsigned int &idx) |
Definition at line 18 of file BscNumberingScheme.h.
BscNumberingScheme::BscNumberingScheme | ( | ) |
Definition at line 13 of file BscNumberingScheme.cc.
References LogDebug.
{ LogDebug("BscSim") << " Creating BscNumberingScheme" ; }
BscNumberingScheme::~BscNumberingScheme | ( | ) | [virtual] |
Definition at line 17 of file BscNumberingScheme.cc.
References LogDebug.
{ LogDebug("BscSim") << " Deleting BscNumberingScheme" ; }
int BscNumberingScheme::detectorLevel | ( | const G4Step * | aStep | ) | const [virtual] |
Definition at line 21 of file BscNumberingScheme.cc.
References testEve_cfg::level.
Referenced by getUnitID().
void BscNumberingScheme::detectorLevel | ( | const G4Step * | aStep, |
int & | level, | ||
int * | copyno, | ||
G4String * | name | ||
) | const [virtual] |
Definition at line 30 of file BscNumberingScheme.cc.
References i, and testEve_cfg::level.
unsigned int BscNumberingScheme::getUnitID | ( | const G4Step * | aStep | ) | const [virtual] |
Definition at line 44 of file BscNumberingScheme.cc.
References detectorLevel(), testEve_cfg::level, LogDebug, mergeVDriftHistosByStation::name, packBscIndex(), and relativeConstraints::station.
Referenced by BscSD::setDetUnitId().
{ unsigned intindex=0; int level = detectorLevel(aStep); LogDebug("BscSim") << "BscNumberingScheme number of levels= " << level; // unsigned int intIndex = 0; if (level > 0) { int* copyno = new int[level]; G4String* name = new G4String[level]; detectorLevel(aStep, level, copyno, name); int det = 0; int zside = 0; int station = 0; for (int ich=0; ich < level; ich++) { // new and old set up configurations are possible: if(name[ich] == "BSC1" ||name[ich] == "BSC2" ) { zside = copyno[ich]-1; } else if(name[ich] == "BSCTrap") { det = 0; station = 2*(copyno[ich]-1); } else if(name[ich] == "BSCTubs") { det = 1; station = copyno[ich]-1; } else if(name[ich] == "BSCTTop") { ++station; } else if(name[ich] == "BSC2Pad"){ det = 2; station = copyno[ich]-1; } LogDebug("BscSim") << "BscNumberingScheme " << "ich=" << ich <<"copyno" << copyno[ich] << "name=" << name[ich]; } intindex = packBscIndex (zside,det, station); LogDebug("BscSim") << "BscNumberingScheme : det " << det << " zside " << zside << " station " << station << " UnitID 0x" << std::hex << intindex << std::dec; for (int ich = 0; ich < level; ich++) LogDebug("BscSim") <<" name = " << name[ich] <<" copy = " << copyno[ich]; LogDebug("BscSim") << " packed index = 0x" << std::hex << intindex << std::dec; delete[] copyno; delete[] name; } return intindex; }
unsigned BscNumberingScheme::packBscIndex | ( | int | det, |
int | zside, | ||
int | station | ||
) | [static] |
Definition at line 99 of file BscNumberingScheme.cc.
References LogDebug.
Referenced by getUnitID(), and BscTest::update().
{ unsigned int idx = 6 << 28; // autre numero que les detecteurs existants idx += (zside<<5)&32; // vaut 0 ou 1 bit 5 idx += (det<<3)&24; //bit 3-4 det:0-1-2 2 bits:0-1 idx += (station&7); //bits 0-2 station:0-7=8-->2**3 =8 3 bits:0-2 LogDebug("BscSim") << "Bsc packing: det " << det << " zside " << zside << " station " << station << "-> 0x" << std::hex << idx << std::dec; // unpackBscIndex(idx); return idx; }
void BscNumberingScheme::unpackBscIndex | ( | const unsigned int & | idx | ) | [static] |
Definition at line 112 of file BscNumberingScheme.cc.
References LogDebug, and relativeConstraints::station.
Referenced by BscTest::update().