2 #include "TObjString.h"
6 #include "AliTRDtrendValue.h"
8 ClassImp(AliTRDtrendValue)
11 //____________________________________________
12 AliTRDtrendValue::AliTRDtrendValue()
13 : TNamed("none", "none")
19 memset(fLimits, 0, 2*(kNlevels+1)*sizeof(Double_t));
20 for(Int_t ilevel(kNlevels); ilevel--; ) sprintf(fAlarmMessage[ilevel], " ");
23 //____________________________________________
24 AliTRDtrendValue::AliTRDtrendValue(Char_t *n, Char_t *t)
32 TObjArray *names(s.Tokenize("_"));
33 if(names->GetEntriesFast()!=2){
34 AliError(Form("Wrong trend value name format. Trend value name should be of the form \"trendClass_trendValue\" with only one \"_\" character."));
37 memset(fLimits, 0, 2*(kNlevels+1)*sizeof(Double_t));
38 for(Int_t ilevel(kNlevels); ilevel--; ) sprintf(fAlarmMessage[ilevel], " ");
41 //____________________________________________
42 Int_t AliTRDtrendValue::GetAlarmLevel()
44 // check value against limits and do some more work
45 fAlarmLevel=kNlevels-1;
46 for(Int_t ilevel(0); ilevel<kNlevels+1; ilevel++)
47 if(fValue<fLimits[2*ilevel+1] &&
48 fValue>=fLimits[2*ilevel]){
56 //____________________________________________
57 const char* AliTRDtrendValue::GetAlarmMessage() const
59 if(!fAlarmLevel) return "OK";
60 else return fAlarmMessage[fAlarmLevel-1];
63 //____________________________________________
64 const char* AliTRDtrendValue::GetClassName() const
66 TString s(TNamed::GetName());
67 TObjArray *names(s.Tokenize("_"));
68 if(names->GetEntriesFast()!=2){
69 AliError(Form("Wrong trend value name format."));
73 return ((TObjString*)names->At(0))->String().Data();
76 //____________________________________________
77 const char* AliTRDtrendValue::GetValueName() const
79 TString s(TNamed::GetName());
80 TObjArray *names(s.Tokenize("_"));
81 if(names->GetEntriesFast()!=2){
82 AliError(Form("Wrong trend value name format."));
85 return ((TObjString*)names->At(1))->String().Data();
88 //____________________________________________
89 const char* AliTRDtrendValue::GetResponsible(Char_t *n, Char_t *mail) const
91 if(n) sprintf(n, "%s", fResponsible.name);
92 if(mail) sprintf(mail, "%s", fResponsible.mail);
93 return Form("%s <%s>", fResponsible.name, fResponsible.mail);
96 //____________________________________________
97 const char* AliTRDtrendValue::GetNotifiable(Int_t in, Char_t *n, Char_t *mail) const
99 if(in<0||in>=fNnotifiable) return NULL;
100 if(n) sprintf(n, "%s", fNotifiable[in].name);
101 if(mail) sprintf(mail, "%s", fNotifiable[in].mail);
102 return Form("%s <%s>", fNotifiable[in].name, fNotifiable[in].mail);
105 //____________________________________________
106 void AliTRDtrendValue::SetNotifiable(const Char_t *name, const Char_t *mail)
108 if(fNnotifiable==kNnotifiable){
109 AliWarning(Form("Could not add %s for notification. Only %d persons can be registered for notification.", name, kNnotifiable));
112 sprintf(fNotifiable[fNnotifiable].name, "%s", name);
113 sprintf(fNotifiable[fNnotifiable].mail, "%s", mail);
117 //____________________________________________
118 void AliTRDtrendValue::SetResponsible(const Char_t *name, const Char_t *mail)
120 sprintf(fResponsible.name, "%s", name);
121 sprintf(fResponsible.mail, "%s", mail);
124 //____________________________________________
125 void AliTRDtrendValue::Print(Option_t */*o*/) const
129 // alarm level, message
132 printf(" %s [%s] - %s\n", GetValueName(), GetClassName(), GetTitle());
133 printf("*** %f limits[%f %f]\n", fValue, fLimits[0], fLimits[1]);
135 printf("*** Alarm level : %d limits[%f %f]\n", fAlarmLevel, fLimits[2*fAlarmLevel], fLimits[2*fAlarmLevel+1]);
136 printf("*** Alarm message : %s\n", GetAlarmMessage());
138 printf("*** Responsible %s <%s>\n", fResponsible.name, fResponsible.mail);
140 printf("*** Notifiable person(s) ***\n");
141 for(Int_t i(0); i<fNnotifiable; i++)
142 printf(" %s <%s>\n", fNotifiable[i].name, fNotifiable[i].mail);
146 //____________________________________________
147 AliTRDtrendValue::AliTRDtrendValueResponsible::AliTRDtrendValueResponsible(Char_t *n, Char_t *m)
149 if(n) sprintf(name, "%s", n); else sprintf(name, " ");
150 if(m) sprintf(mail, "%s", m); else sprintf(mail, " ");