#include <Riostream.h>
#include <fstream>
#include <TArray.h>
#include <TString.h>
#include <TObjString.h>
#include <TObjArray.h>
#include "AliLog.h"
#include "AliITSQASSDRefData.h"
using std::ifstream;
ClassImp(AliITSQASSDRefData)
AliITSQASSDRefData::AliITSQASSDRefData() :
TObject(),
fRefList(0),
fNameList(0) {
}
AliITSQASSDRefData::AliITSQASSDRefData(Int_t specie) :
TObject(),
fRefList(0),
fNameList(0) {
SetDefault(specie);
}
AliITSQASSDRefData::AliITSQASSDRefData(const char* path) :
TObject(),
fRefList(0),
fNameList(0) {
SetReferenceData(path);
}
AliITSQASSDRefData::AliITSQASSDRefData(const AliITSQASSDRefData& refData):
TObject(),
fRefList(refData.fRefList),
fNameList(refData.fNameList) {
}
AliITSQASSDRefData& AliITSQASSDRefData::operator = (const AliITSQASSDRefData& refData) {
if(&refData != this) {
fRefList = refData.fRefList;
fNameList = refData.fNameList;
}
return *this ;
}
AliITSQASSDRefData::~AliITSQASSDRefData() {
if(fRefList) delete fRefList;
if(fNameList) delete fNameList;
}
void AliITSQASSDRefData::AddReference(const char* name="",
Int_t id=-1,
Double_t value=0) {
if(id>-1&&id<fRefList->GetSize()) {
AliError(Form("Reference with id %i already exists. Choose other id or use SetReferenceValue(Int_t, Double_t) to overwrite",id));
return;
}
if( (strcmp(name,"")!=0) && GetID(name)!=-1) {
AliError(Form("Reference with name %s already exists. Choose other name or use SetReferenceValue(const char*, Double_t) to overwrite",name));
return;
}
if(id==-1) id=fRefList->GetSize();
fRefList->Set(id+1);
fRefList->AddAt(value,id);
fNameList->AddAt(new TObjString(name),id);
}
Int_t AliITSQASSDRefData::GetID(const char* name) {
Int_t status = -1;
TString refName = "";
TString stringName = name;
TObjString *dummyString = 0;
for (Int_t id=0; id<fNameList->GetEntriesFast(); id++){
dummyString = static_cast <TObjString *>(fNameList->At(id));
refName = dummyString->GetString();
if(refName == stringName) {
status = id;
}
}
return status;
}
Double_t AliITSQASSDRefData::GetReferenceValue(const char* name) {
TString refName = "";
TObjString *dummyString = 0;
for (Int_t id=0; id<fNameList->GetEntriesFast(); id++){
dummyString = static_cast <TObjString *>(fNameList->At(id));
refName = dummyString->GetString();
if(refName.Data()==name) return fRefList->At(id);
}
AliError(Form("Reference name %s unknown",name));
return -1;
}
Double_t AliITSQASSDRefData::GetReferenceValue(Int_t id) {
if (id<0||id>fRefList->GetSize()-1){
AliError("Reference ID out of range");
return 0;
}
return fRefList->At(id);
}
void AliITSQASSDRefData::PrintTable() {
Printf("___ SSD REFERENCE DATA ___ ");
Printf("ID ----- Value ------- Name");
Int_t id=0;
TString refName = "";
TObjString *dummyString = 0;
for(id=0; id<fRefList->GetSize()-1; id++) {
dummyString = static_cast <TObjString *>(fNameList->At(id));
refName = dummyString->GetString();
Printf("%i ------ %4.3g -------- %s",id,fRefList->At(id),refName.Data());
}
}
void AliITSQASSDRefData::SetDefault(Int_t specie) {
if(!fNameList) fNameList = new TObjArray();
fNameList->Add(new TObjString("minSSDDataSize"));
fNameList->Add(new TObjString("maxSSDDataSize"));
fNameList->Add(new TObjString("minDDLDataSize"));
fNameList->Add(new TObjString("maxDDLDataSize"));
fNameList->Add(new TObjString("minLDCDataSize"));
fNameList->Add(new TObjString("maxLDCDataSize"));
fNameList->Add(new TObjString("minMeanDDLDataSize"));
fNameList->Add(new TObjString("maxMeanDDLDataSize"));
fNameList->Add(new TObjString("minMeanLDCDataSize"));
fNameList->Add(new TObjString("maxMeanLDCDataSize"));
fNameList->Add(new TObjString("maxOccupancy"));
fNameList->SetOwner(kTRUE);
Double_t refValues[11] = {0,0.0,0,0,0,0,0,0,0,0};
if(specie == 1) {
refValues[0] = 0; refValues[1] = 500; refValues[2] = 0; refValues[3] = 50;
refValues[4] = 0; refValues[5] = 100; refValues[6] = 0; refValues[7] = 50;
refValues[8] = 0; refValues[9] = 100; refValues[10] = 5;
}
if(specie == 2) {
refValues[0] = 0; refValues[1] = 500; refValues[2] = 0; refValues[3] = 50;
refValues[4] = 0; refValues[5] = 100; refValues[6] = 0; refValues[7] = 50;
refValues[8] = 0; refValues[9] = 100; refValues[10] = 5;
}
if(specie == 3) {
refValues[0] = 0; refValues[1] = 500; refValues[2] = 0; refValues[3] = 50;
refValues[4] = 0; refValues[5] = 100; refValues[6] = 0; refValues[7] = 50;
refValues[8] = 0; refValues[9] = 100; refValues[10] = 5;
}
if(specie == 4) {
refValues[0] = 0; refValues[1] = 500; refValues[2] = 0; refValues[3] = 50;
refValues[4] = 0; refValues[5] = 100; refValues[6] = 0; refValues[7] = 50;
refValues[8] = 0; refValues[9] = 100; refValues[10] = 5;
}
if(!fRefList) fRefList = new TArrayD();
fRefList->Set(11,refValues);
}
void AliITSQASSDRefData::SetReferenceData(const char* path) {
if(!fRefList) fRefList = new TArrayD();
if(!fNameList) fNameList = new TObjArray();
ifstream file;
file.open(path);
if (!file) {
AliWarning(Form("No file found at %s",path));
SetDefault(0);
return;
}
if(file.bad()){
AliWarning("Reference data could not be read: Default values are used.");
SetDefault(0);
return;
}
fRefList->Set(0);
Int_t id = 0, newid = -1;
Double_t value = 0;
TString name = "";
while (!file.eof()) {
file >> name >> id >> value;
if (newid==id) continue;
AddReference(name.Data(), id, value);
newid = id;
}
file.close();
}
void AliITSQASSDRefData::SetReferenceValue(Int_t id, Double_t value) {
if(id<0||id>fRefList->GetSize()-1) {
AliWarning(Form("Reference ID %i out of range: value not set",id));
}
else fRefList->SetAt(value,id);
}
void AliITSQASSDRefData::SetReferenceValue(const char* name, Double_t value) {
Int_t id = GetID(name);
if(id == -1) {
AliError(Form("Reference name %s unknown: value not set",name));
return;
}
fRefList->SetAt(value,id);
}
AliITSQASSDRefData.cxx:10 AliITSQASSDRefData.cxx:11 AliITSQASSDRefData.cxx:12 AliITSQASSDRefData.cxx:13 AliITSQASSDRefData.cxx:14 AliITSQASSDRefData.cxx:15 AliITSQASSDRefData.cxx:16 AliITSQASSDRefData.cxx:17 AliITSQASSDRefData.cxx:18 AliITSQASSDRefData.cxx:19 AliITSQASSDRefData.cxx:20 AliITSQASSDRefData.cxx:21 AliITSQASSDRefData.cxx:22 AliITSQASSDRefData.cxx:23 AliITSQASSDRefData.cxx:24 AliITSQASSDRefData.cxx:25 AliITSQASSDRefData.cxx:26 AliITSQASSDRefData.cxx:27 AliITSQASSDRefData.cxx:28 AliITSQASSDRefData.cxx:29 AliITSQASSDRefData.cxx:30 AliITSQASSDRefData.cxx:31 AliITSQASSDRefData.cxx:32 AliITSQASSDRefData.cxx:33 AliITSQASSDRefData.cxx:34 AliITSQASSDRefData.cxx:35 AliITSQASSDRefData.cxx:36 AliITSQASSDRefData.cxx:37 AliITSQASSDRefData.cxx:38 AliITSQASSDRefData.cxx:39 AliITSQASSDRefData.cxx:40 AliITSQASSDRefData.cxx:41 AliITSQASSDRefData.cxx:42 AliITSQASSDRefData.cxx:43 AliITSQASSDRefData.cxx:44 AliITSQASSDRefData.cxx:45 AliITSQASSDRefData.cxx:46 AliITSQASSDRefData.cxx:47 AliITSQASSDRefData.cxx:48 AliITSQASSDRefData.cxx:49 AliITSQASSDRefData.cxx:50 AliITSQASSDRefData.cxx:51 AliITSQASSDRefData.cxx:52 AliITSQASSDRefData.cxx:53 AliITSQASSDRefData.cxx:54 AliITSQASSDRefData.cxx:55 AliITSQASSDRefData.cxx:56 AliITSQASSDRefData.cxx:57 AliITSQASSDRefData.cxx:58 AliITSQASSDRefData.cxx:59 AliITSQASSDRefData.cxx:60 AliITSQASSDRefData.cxx:61 AliITSQASSDRefData.cxx:62 AliITSQASSDRefData.cxx:63 AliITSQASSDRefData.cxx:64 AliITSQASSDRefData.cxx:65 AliITSQASSDRefData.cxx:66 AliITSQASSDRefData.cxx:67 AliITSQASSDRefData.cxx:68 AliITSQASSDRefData.cxx:69 AliITSQASSDRefData.cxx:70 AliITSQASSDRefData.cxx:71 AliITSQASSDRefData.cxx:72 AliITSQASSDRefData.cxx:73 AliITSQASSDRefData.cxx:74 AliITSQASSDRefData.cxx:75 AliITSQASSDRefData.cxx:76 AliITSQASSDRefData.cxx:77 AliITSQASSDRefData.cxx:78 AliITSQASSDRefData.cxx:79 AliITSQASSDRefData.cxx:80 AliITSQASSDRefData.cxx:81 AliITSQASSDRefData.cxx:82 AliITSQASSDRefData.cxx:83 AliITSQASSDRefData.cxx:84 AliITSQASSDRefData.cxx:85 AliITSQASSDRefData.cxx:86 AliITSQASSDRefData.cxx:87 AliITSQASSDRefData.cxx:88 AliITSQASSDRefData.cxx:89 AliITSQASSDRefData.cxx:90 AliITSQASSDRefData.cxx:91 AliITSQASSDRefData.cxx:92 AliITSQASSDRefData.cxx:93 AliITSQASSDRefData.cxx:94 AliITSQASSDRefData.cxx:95 AliITSQASSDRefData.cxx:96 AliITSQASSDRefData.cxx:97 AliITSQASSDRefData.cxx:98 AliITSQASSDRefData.cxx:99 AliITSQASSDRefData.cxx:100 AliITSQASSDRefData.cxx:101 AliITSQASSDRefData.cxx:102 AliITSQASSDRefData.cxx:103 AliITSQASSDRefData.cxx:104 AliITSQASSDRefData.cxx:105 AliITSQASSDRefData.cxx:106 AliITSQASSDRefData.cxx:107 AliITSQASSDRefData.cxx:108 AliITSQASSDRefData.cxx:109 AliITSQASSDRefData.cxx:110 AliITSQASSDRefData.cxx:111 AliITSQASSDRefData.cxx:112 AliITSQASSDRefData.cxx:113 AliITSQASSDRefData.cxx:114 AliITSQASSDRefData.cxx:115 AliITSQASSDRefData.cxx:116 AliITSQASSDRefData.cxx:117 AliITSQASSDRefData.cxx:118 AliITSQASSDRefData.cxx:119 AliITSQASSDRefData.cxx:120 AliITSQASSDRefData.cxx:121 AliITSQASSDRefData.cxx:122 AliITSQASSDRefData.cxx:123 AliITSQASSDRefData.cxx:124 AliITSQASSDRefData.cxx:125 AliITSQASSDRefData.cxx:126 AliITSQASSDRefData.cxx:127 AliITSQASSDRefData.cxx:128 AliITSQASSDRefData.cxx:129 AliITSQASSDRefData.cxx:130 AliITSQASSDRefData.cxx:131 AliITSQASSDRefData.cxx:132 AliITSQASSDRefData.cxx:133 AliITSQASSDRefData.cxx:134 AliITSQASSDRefData.cxx:135 AliITSQASSDRefData.cxx:136 AliITSQASSDRefData.cxx:137 AliITSQASSDRefData.cxx:138 AliITSQASSDRefData.cxx:139 AliITSQASSDRefData.cxx:140 AliITSQASSDRefData.cxx:141 AliITSQASSDRefData.cxx:142 AliITSQASSDRefData.cxx:143 AliITSQASSDRefData.cxx:144 AliITSQASSDRefData.cxx:145 AliITSQASSDRefData.cxx:146 AliITSQASSDRefData.cxx:147 AliITSQASSDRefData.cxx:148 AliITSQASSDRefData.cxx:149 AliITSQASSDRefData.cxx:150 AliITSQASSDRefData.cxx:151 AliITSQASSDRefData.cxx:152 AliITSQASSDRefData.cxx:153 AliITSQASSDRefData.cxx:154 AliITSQASSDRefData.cxx:155 AliITSQASSDRefData.cxx:156 AliITSQASSDRefData.cxx:157 AliITSQASSDRefData.cxx:158 AliITSQASSDRefData.cxx:159 AliITSQASSDRefData.cxx:160 AliITSQASSDRefData.cxx:161 AliITSQASSDRefData.cxx:162 AliITSQASSDRefData.cxx:163 AliITSQASSDRefData.cxx:164 AliITSQASSDRefData.cxx:165 AliITSQASSDRefData.cxx:166 AliITSQASSDRefData.cxx:167 AliITSQASSDRefData.cxx:168 AliITSQASSDRefData.cxx:169 AliITSQASSDRefData.cxx:170 AliITSQASSDRefData.cxx:171 AliITSQASSDRefData.cxx:172 AliITSQASSDRefData.cxx:173 AliITSQASSDRefData.cxx:174 AliITSQASSDRefData.cxx:175 AliITSQASSDRefData.cxx:176 AliITSQASSDRefData.cxx:177 AliITSQASSDRefData.cxx:178 AliITSQASSDRefData.cxx:179 AliITSQASSDRefData.cxx:180 AliITSQASSDRefData.cxx:181 AliITSQASSDRefData.cxx:182 AliITSQASSDRefData.cxx:183 AliITSQASSDRefData.cxx:184 AliITSQASSDRefData.cxx:185 AliITSQASSDRefData.cxx:186 AliITSQASSDRefData.cxx:187 AliITSQASSDRefData.cxx:188 AliITSQASSDRefData.cxx:189 AliITSQASSDRefData.cxx:190 AliITSQASSDRefData.cxx:191 AliITSQASSDRefData.cxx:192 AliITSQASSDRefData.cxx:193 AliITSQASSDRefData.cxx:194 AliITSQASSDRefData.cxx:195 AliITSQASSDRefData.cxx:196 AliITSQASSDRefData.cxx:197 AliITSQASSDRefData.cxx:198 AliITSQASSDRefData.cxx:199 AliITSQASSDRefData.cxx:200 AliITSQASSDRefData.cxx:201 AliITSQASSDRefData.cxx:202 AliITSQASSDRefData.cxx:203 AliITSQASSDRefData.cxx:204 AliITSQASSDRefData.cxx:205 AliITSQASSDRefData.cxx:206 AliITSQASSDRefData.cxx:207 AliITSQASSDRefData.cxx:208 AliITSQASSDRefData.cxx:209 AliITSQASSDRefData.cxx:210 AliITSQASSDRefData.cxx:211 AliITSQASSDRefData.cxx:212 AliITSQASSDRefData.cxx:213 AliITSQASSDRefData.cxx:214 AliITSQASSDRefData.cxx:215 AliITSQASSDRefData.cxx:216 AliITSQASSDRefData.cxx:217 AliITSQASSDRefData.cxx:218 AliITSQASSDRefData.cxx:219 AliITSQASSDRefData.cxx:220 AliITSQASSDRefData.cxx:221 AliITSQASSDRefData.cxx:222 AliITSQASSDRefData.cxx:223 AliITSQASSDRefData.cxx:224 AliITSQASSDRefData.cxx:225 AliITSQASSDRefData.cxx:226 AliITSQASSDRefData.cxx:227 AliITSQASSDRefData.cxx:228 AliITSQASSDRefData.cxx:229 AliITSQASSDRefData.cxx:230 AliITSQASSDRefData.cxx:231 AliITSQASSDRefData.cxx:232 AliITSQASSDRefData.cxx:233 AliITSQASSDRefData.cxx:234 AliITSQASSDRefData.cxx:235 AliITSQASSDRefData.cxx:236 AliITSQASSDRefData.cxx:237 AliITSQASSDRefData.cxx:238 AliITSQASSDRefData.cxx:239 AliITSQASSDRefData.cxx:240 AliITSQASSDRefData.cxx:241 AliITSQASSDRefData.cxx:242 AliITSQASSDRefData.cxx:243 AliITSQASSDRefData.cxx:244 AliITSQASSDRefData.cxx:245 AliITSQASSDRefData.cxx:246 AliITSQASSDRefData.cxx:247 AliITSQASSDRefData.cxx:248 AliITSQASSDRefData.cxx:249 AliITSQASSDRefData.cxx:250 AliITSQASSDRefData.cxx:251 AliITSQASSDRefData.cxx:252 AliITSQASSDRefData.cxx:253 AliITSQASSDRefData.cxx:254 AliITSQASSDRefData.cxx:255 AliITSQASSDRefData.cxx:256 AliITSQASSDRefData.cxx:257 AliITSQASSDRefData.cxx:258 AliITSQASSDRefData.cxx:259 AliITSQASSDRefData.cxx:260 AliITSQASSDRefData.cxx:261 AliITSQASSDRefData.cxx:262 AliITSQASSDRefData.cxx:263 AliITSQASSDRefData.cxx:264 AliITSQASSDRefData.cxx:265 AliITSQASSDRefData.cxx:266 AliITSQASSDRefData.cxx:267 AliITSQASSDRefData.cxx:268 AliITSQASSDRefData.cxx:269 AliITSQASSDRefData.cxx:270 AliITSQASSDRefData.cxx:271 AliITSQASSDRefData.cxx:272 AliITSQASSDRefData.cxx:273 AliITSQASSDRefData.cxx:274 AliITSQASSDRefData.cxx:275 AliITSQASSDRefData.cxx:276 AliITSQASSDRefData.cxx:277 AliITSQASSDRefData.cxx:278 AliITSQASSDRefData.cxx:279 AliITSQASSDRefData.cxx:280