1 #ifndef Podd_THaCrateMap_h_
2 #define Podd_THaCrateMap_h_
38 explicit THaCrateMap(
const char* db =
"cratemap" );
41 bool isVme( UInt_t crate )
const;
42 bool isCamac( UInt_t crate )
const;
45 UInt_t
getNslot( UInt_t crate )
const;
51 Int_t
getModel( UInt_t crate, UInt_t slot )
const;
52 UInt_t
getHeader( UInt_t crate, UInt_t slot )
const;
53 UInt_t
getMask( UInt_t crate, UInt_t slot )
const;
54 Int_t
getBank( UInt_t crate, UInt_t slot )
const;
57 const char*
getConfigStr( UInt_t crate, UInt_t slot )
const;
58 UInt_t
getNchan( UInt_t crate, UInt_t slot )
const;
59 UInt_t
getNdata( UInt_t crate, UInt_t slot )
const;
61 bool slotUsed( UInt_t crate, UInt_t slot )
const;
62 bool slotClear( UInt_t crate, UInt_t slot )
const;
63 void setUnused( UInt_t crate, UInt_t slot );
64 int init(
const std::string& the_map);
65 int init(ULong64_t time = 0);
66 int init( FILE* fi,
const char* fname );
67 void print(std::ostream& os = std::cout)
const;
70 const std::vector<UInt_t>&
GetUsedSlots( UInt_t crate )
const;
75 const char*
GetName()
const {
return fDBfileName.c_str(); }
79 enum ECrateCode { kUnknown, kFastbus, kVME, kScaler, kCamac };
81 std::string fDBfileName;
87 model(0), header(0), headmask(0xffffffff), bank(-1),
88 nchan(0), ndata(0), used(false), clear(true) {}
103 ECrateCode crate_code;
104 std::string crate_type_name;
105 std::string scalerloc;
108 std::vector<UInt_t> used_slots;
109 std::array<SlotInfo_t, MAXSLOT> sltdat;
111 std::vector<CrateInfo_t> crdat;
113 std::vector<UInt_t> used_crates;
115 Int_t loadConfig( std::string& line, std::string& cfgstr );
116 Int_t setCrateType( UInt_t crate,
const char* stype );
117 Int_t setModel( UInt_t crate, UInt_t slot, Int_t mod,
118 UInt_t nchan= MAXCHAN,
119 UInt_t ndata= MAXDATA );
120 void setUsed( UInt_t crate, UInt_t slot );
121 Int_t SetModelSize( UInt_t crate, UInt_t slot, UInt_t model );
123 static Int_t readFile( FILE* fi, std::string& text );
132 assert( crate < crdat.size() );
133 return (crdat[crate].crate_code == kFastbus);
139 assert( crate < crdat.size() );
140 return (crdat[crate].crate_code == kVME ||
141 crdat[crate].crate_code == kScaler );
147 assert( crate < crdat.size() );
148 return (crdat[crate].crate_code == kCamac);
154 assert( crate < crdat.size() );
155 return (crdat[crate].crate_code == kScaler);
161 assert( crate < crdat.size() );
162 return (crdat[crate].bank_structure);
168 assert( crate < crdat.size() );
169 return crdat[crate].crate_used;
175 assert( crate < crdat.size() && slot < crdat[crate].sltdat.size() );
176 if( crate >= crdat.size() || slot >= crdat[crate].sltdat.size() )
178 return crdat[crate].sltdat[slot].used;
184 assert( crate < crdat.size() && slot < crdat[crate].sltdat.size() );
185 return crdat[crate].sltdat[slot].clear;
191 assert( crate < crdat.size() && slot < crdat[crate].sltdat.size() );
192 return crdat[crate].sltdat[slot].model;
198 assert( crate < crdat.size() && slot < crdat[crate].sltdat.size() );
199 return crdat[crate].sltdat[slot].headmask;
205 assert( crate < crdat.size() && slot < crdat[crate].sltdat.size() );
206 return crdat[crate].sltdat[slot].bank;
212 assert( crate < crdat.size() && slot < crdat[crate].sltdat.size() );
213 return crdat[crate].sltdat[slot].nchan;
219 assert( crate < crdat.size() && slot < crdat[crate].sltdat.size() );
220 return crdat[crate].sltdat[slot].ndata;
226 assert( crate < crdat.size() );
227 return crdat[crate].used_slots.size();
233 assert( crate < crdat.size() );
234 return crdat[crate].scalerloc.c_str();
240 assert( crate < crdat.size() && slot < crdat[crate].sltdat.size() );
241 return crdat[crate].sltdat[slot].cfgstr.c_str();
247 assert( crate < crdat.size() );
248 if( crdat[crate].used_slots.empty() )
250 return crdat[crate].used_slots.front();
256 assert( crate < crdat.size() );
257 if( crdat[crate].used_slots.empty() )
259 return crdat[crate].used_slots.back();
265 assert( crate < crdat.size() && slot < crdat[crate].sltdat.size() );
266 return crdat[crate].sltdat[slot].header;
278 assert( crate < crdat.size() );
279 return crdat[crate].used_slots;
void setUnused(UInt_t crate, UInt_t slot)
Definition: THaCrateMap.cxx:193
bool slotUsed(UInt_t crate, UInt_t slot) const
Definition: THaCrateMap.h:173
Int_t getBank(UInt_t crate, UInt_t slot) const
Definition: THaCrateMap.h:203
static const UInt_t MAXCHAN
Definition: THaCrateMap.h:35
virtual ~THaCrateMap()=default
void print(std::ostream &os=std::cout) const
Definition: THaCrateMap.cxx:274
bool slotClear(UInt_t crate, UInt_t slot) const
Definition: THaCrateMap.h:182
UInt_t getNchan(UInt_t crate, UInt_t slot) const
Definition: THaCrateMap.h:210
const char * GetName() const
Definition: THaCrateMap.h:75
int init(const std::string &the_map)
Definition: THaCrateMap.cxx:345
UInt_t getMinSlot(UInt_t crate) const
Definition: THaCrateMap.h:245
bool isScalerCrate(UInt_t crate) const
Definition: THaCrateMap.h:152
UInt_t getNdata(UInt_t crate, UInt_t slot) const
Definition: THaCrateMap.h:217
const char * getScalerLoc(UInt_t crate) const
Definition: THaCrateMap.h:231
bool crateUsed(UInt_t crate) const
Definition: THaCrateMap.h:166
bool isFastBus(UInt_t crate) const
Definition: THaCrateMap.h:130
UInt_t getNslot(UInt_t crate) const
Definition: THaCrateMap.h:224
THaCrateMap(const char *db="cratemap")
Definition: THaCrateMap.cxx:70
const std::vector< UInt_t > & GetUsedCrates() const
Definition: THaCrateMap.h:270
static const Int_t CM_OK
Definition: THaCrateMap.h:72
UInt_t getHeader(UInt_t crate, UInt_t slot) const
Definition: THaCrateMap.h:263
bool isBankStructure(UInt_t crate) const
Definition: THaCrateMap.h:159
UInt_t getMask(UInt_t crate, UInt_t slot) const
Definition: THaCrateMap.h:196
UInt_t getScalerCrate(UInt_t word) const
Definition: THaCrateMap.cxx:84
Int_t getModel(UInt_t crate, UInt_t slot) const
Definition: THaCrateMap.h:189
UInt_t getMaxSlot(UInt_t crate) const
Definition: THaCrateMap.h:254
const char * getConfigStr(UInt_t crate, UInt_t slot) const
Definition: THaCrateMap.h:238
static const Int_t CM_ERR
Definition: THaCrateMap.h:73
bool isVme(UInt_t crate) const
Definition: THaCrateMap.h:137
const std::vector< UInt_t > & GetUsedSlots(UInt_t crate) const
Definition: THaCrateMap.h:276
Definition: Caen1190Module.cxx:20
bool isCamac(UInt_t crate) const
Definition: THaCrateMap.h:145
static const UInt_t MAXDATA
Definition: THaCrateMap.h:36
Definition: THaCrateMap.h:33