19 if(
fCalMap.count(channum) == 1) {
29 SetClass(TClass::GetClass(className));
36 std::cout <<
"TCalManager type already set to " <<
fClass->ClassName() << std::endl;
43 Error(
"SetClass",
"called with a null pointer");
46 const char* className =
fClass->GetName();
47 if(!
fClass->InheritsFrom(TCal::Class())) {
49 Error(
"SetClass",
"%s does not inherit from TCal", className);
52 if(
fClass->GetBaseClassOffset(TObject::Class()) != 0) {
54 Error(
"SetClass",
"%s must inherit from TObject as the left most base class.", className);
57 std::cout <<
"Changing TCalManager to type: " << className << std::endl;
58 auto nch = strlen(className) + 2;
59 auto* name =
new char[nch];
60 snprintf(name, nch,
"%ss", className);
71 }
catch(
const std::out_of_range& oor) {
72 Error(
"GetCal",
"Channel %u is empty", chanNum);
86 Error(
"AddToManager",
"Channel has not been set");
102 }
else if(
fClass->GetName() != cal->ClassName()) {
103 Error(
"AddToManager",
"Trying to put a %s in a TCalManager of type %s", cal->ClassName(),
fClass->GetName());
114 if(strcmp(opt,
"overwrite") == 0) {
118 oldCal =
static_cast<TCal*
>(cal->Clone(cal->GetName()));
122 Error(
"AddToManager",
"Trying to add a channel that already exists!");
125 TCal* newCal =
static_cast<TCal*
>(cal->Clone(cal->GetName()));
135 fCalMap.insert(std::make_pair(chanNum, newCal));
144 for(
const auto& iter :
fCalMap) {
145 if(iter.second !=
nullptr) {
146 iter.second->WriteToChannel();
165 std::cout <<
"Type: " <<
fClass->GetName() << std::endl;
167 std::cout <<
"Size: " <<
fCalMap.size() << std::endl;
Bool_t SetChannel(TChannel *chan)
TChannel * GetChannel() const
void WriteToChannel() const
Bool_t AddToManager(TCal *cal, UInt_t chanNum, Option_t *opt="")
void Clear(Option_t *opt="") override
std::map< UInt_t, TCal * > fCalMap
void SetClass(const char *className)
void Print(Option_t *opt="") const override
void RemoveCal(UInt_t channum, Option_t *opt="")
TCal * GetCal(UInt_t chanNum)