#include <TFile.h>
#include <Riostream.h>
#include <TSystem.h>
#include <TObjArray.h>
#include <TObjString.h>
#include <TArrayI.h>
#include <TIterator.h>
#include <TKey.h>
#include <TMath.h>
#include <TList.h>
#include "AliLog.h"
#include "AliITSOnlineSPDfoChipConfig.h"
#include "AliITSOnlineSPDfoChip.h"
#include "AliITSOnlineSPDfoInfo.h"
#include "AliITSOnlineSPDfo.h"
ClassImp(AliITSOnlineSPDfo)
AliITSOnlineSPDfo::AliITSOnlineSPDfo():
fRunNr(0),
fNdacs(0),
fFileName(""),
fFile(0x0),
fInfo(0x0),
fDACnames(0x0),
fArray(0x0),
fCheckIndex(-1),
fIndex(-1),
fInitialConfiguration("")
{
}
AliITSOnlineSPDfo::AliITSOnlineSPDfo(TString inputfile, Int_t runNr, Int_t eqId):
fRunNr(runNr),
fNdacs(0),
fFileName(""),
fFile(0x0),
fInfo(0x0),
fDACnames(0x0),
fArray(0x0),
fCheckIndex(-1),
fIndex(-1),
fInitialConfiguration("")
{
fFileName=Form("%i_%s%02i.root",runNr,inputfile.Data(),eqId);
fFile = TFile::Open(fFileName.Data());
fArray = new TObjArray();
fDACnames = new THashList();
}
AliITSOnlineSPDfo::AliITSOnlineSPDfo(const AliITSOnlineSPDfo &c):
fRunNr(c.fRunNr),
fNdacs(c.fNdacs),
fFileName(c.fFileName),
fFile(c.fFile),
fInfo(c.fInfo),
fDACnames(c.fDACnames),
fArray(c.fArray),
fCheckIndex(c.fCheckIndex),
fIndex(c.fIndex),
fInitialConfiguration(c.fInitialConfiguration)
{
}
void AliITSOnlineSPDfo::SetFile(TString inputfile)
{
if(fFile) {
fInfo = (AliITSOnlineSPDfoInfo *)fFile->Get("generalinfo");
return;
} else {
fFile = TFile::Open(inputfile.Data());
if(!fFile) {
Info("AliITSOnlineSPDfo::SetFile"," %s not existing.... The scan info are not available....crash is expected \n",inputfile.Data());
return;
} else {
fInfo = (AliITSOnlineSPDfoInfo *)fFile->Get("generalinfo");
fNdacs = fInfo->GetNumDACindex();
}
}
}
void AliITSOnlineSPDfo::CreateOutputFile()
{
if(fFile) Info("AliITSOnlineSPDfo::CreateOutputFile","removing previous file....\n");
fFile = TFile::Open(fFileName.Data(),"RECREATE");
}
void AliITSOnlineSPDfo::AddMeasurement(const TArrayS dac, Short_t measure[4], Int_t hs, Int_t chipId)
{
AliITSOnlineSPDfoChipConfig *counts = new AliITSOnlineSPDfoChipConfig(measure);
Int_t arrayelement = CheckDACEntry(dac);
if(arrayelement< 0){
TString dacname = CreateDACEntry(dac);
TObjString *string = new TObjString(dacname.Data());
fDACnames->Add(string);
TObjArray *array = new TObjArray(60);
AliITSOnlineSPDfoChip * chip = new AliITSOnlineSPDfoChip(dac.GetSize());
chip->SetActiveHS(hs);
chip->SetChipId(chipId);
for(Int_t i=0; i< dac.GetSize() ; i++) chip->SetDACParameter(i,dac.At(i));
chip->AddMeasurement(counts);
array->AddAt(chip,hs*10+chipId);
fArray->AddLast(array);
} else {
TObjArray *arr = (TObjArray*)fArray->At(arrayelement);
if(!arr->At(hs*10+chipId)){
AliITSOnlineSPDfoChip * chip = new AliITSOnlineSPDfoChip(dac.GetSize());
chip->SetActiveHS(hs);
chip->SetChipId(chipId);
for(Int_t i=0; i< dac.GetSize() ; i++) chip->SetDACParameter(i,dac.At(i));
chip->AddMeasurement(counts);
arr->AddAt(chip,hs*10+chipId);
} else {
AliITSOnlineSPDfoChip *c = (AliITSOnlineSPDfoChip *)arr->At(hs*10+chipId);
if(c)c->AddMeasurement(counts);
}
}
}
Int_t AliITSOnlineSPDfo::CheckDACEntry(const TArrayS dac)
{
TString name = CreateDACEntry(dac);
if(!fDACnames) {
Info("AliITSOnlineSPDfo::CheckDACEntry"," NO DAC name array is present, exiting.... \n");
return -1;
}
Double_t c = 0;
for(Int_t i=0; i< fNdacs; i++) c+=dac.At(i)*TMath::Power(10,3*i);
if(c==fCheckIndex) return fIndex;
Int_t idx = -1;
if(fDACnames->FindObject( name.Data() )) {
idx = fDACnames->IndexOf( fDACnames->FindObject( name.Data() ) );
fCheckIndex=0;
for(Int_t i=0; i< fNdacs; i++) fCheckIndex+=dac.At(i)*TMath::Power(10,3*i);
fIndex=idx;
}
return idx;
}
void AliITSOnlineSPDfo::WriteToFile()
{
if(fDACnames->GetEntries() != fArray->GetEntries()) {
printf("mismatch names-array. Exiting....");
return;
}
for(Int_t i=0; i< fDACnames->GetEntries(); i++){
fFile->WriteObject(fArray->At(i),fDACnames->At(i)->GetName());
}
fFile->WriteTObject(fInfo,"generalinfo");
fFile->Close();
}
TString AliITSOnlineSPDfo::CreateDACEntry(const TArrayS dacs) const
{
TString dacvalues;
for(Int_t i=0; i<dacs.GetSize(); i++) dacvalues+=Form("-%i",dacs.At(i));
dacvalues.Remove(0,1);
return dacvalues;
}
TArrayI AliITSOnlineSPDfo::GetDACscanParams() const
{
TFile *f =0x0;
if(fFile->IsOpen()) f = fFile;
else f = TFile::Open(fFileName.Data());
TArrayI dacs;
if(f->GetNkeys() < 2) return dacs;
dacs.Set(fNdacs*3);
TArrayI min(fNdacs), max(fNdacs),step(fNdacs), check(fNdacs), refvalues(fNdacs);
for(Int_t i=0; i< fNdacs ; i++) {
min.AddAt(9999,i);
max.AddAt(0,i);
step.AddAt(0,i);
check.AddAt(0,i);
}
TKey *key;
TIter iter(f->GetListOfKeys());
while ((key = (TKey*)(iter.Next()))) {
TString classname = key->GetClassName();
if(classname.Contains("OnlineSPD")) break;
TString values = key->GetName();
Int_t *val = GetDACvalues(values,fNdacs);
for(Int_t i=0; i< fNdacs; i++) {
if(val[i]<=min.At(i)) min.AddAt(val[i],i);
if(val[i] >= max.At(i)) max.AddAt(val[i],i);
if(!check.At(i)) {
refvalues.AddAt(val[i],i);
check.AddAt(1,i);
}
if(step.At(i) ==0 && check.At(i)){
if(val[i]!=refvalues.At(i)) step.AddAt(TMath::Abs(refvalues.At(i) - val[i]),i);
}
}
delete [] val;
}
for(Int_t i=0; i<fNdacs; i++) {
dacs.AddAt(min.At(i),3*i);
dacs.AddAt(max.At(i),3*i+1);
dacs.AddAt(step.At(i),3*i+2);
}
return dacs;
}
Int_t* AliITSOnlineSPDfo::GetDACvalues(TString s, const Int_t ndacs) const
{
Int_t *val = new Int_t[ndacs];
s.ReplaceAll("-"," ");
char *pEnd = Form("%s",s.Data());
for(Int_t i=0; i< ndacs; i++) {
val[i] = strtol(pEnd,&pEnd,10);
}
return val;
}
Double_t* AliITSOnlineSPDfo::GetDACvaluesD(TString s, const Int_t ndacs) const
{
Double_t *val = new Double_t[ndacs];
Int_t *values = GetDACvalues(s,ndacs);
for(Int_t i=0; i< ndacs; i++) val[i] = (Double_t)values[i];
delete [] values;
return val;
}
TArrayS AliITSOnlineSPDfo::CreateDACArray(const TArrayS dacs, const TArrayS dacId) const
{
TArrayS dacarray(dacs.GetSize());
for(Int_t i=0; i<dacs.GetSize(); i++) {
if(dacId.At(i)==kIdFOPOL) dacarray.AddAt(dacs.At(i),kFOPOL);
else if(dacId.At(i)==kIdCONVPOL) dacarray.AddAt(dacs.At(i),kCONVPOL);
else if(dacId.At(i)==kIdCOMPREF) dacarray.AddAt(dacs.At(i),kCOMPREF);
else if(dacId.At(i)==kIdPreVTH) dacarray.AddAt(dacs.At(i),kPreVTH);
else if(dacId.At(i)==kIdCGPOL) dacarray.AddAt(dacs.At(i),kCGPOL);
else printf("new DAC included in the scan??\n");
}
return dacarray;
}
AliITSOnlineSPDfo.cxx:100 AliITSOnlineSPDfo.cxx:101 AliITSOnlineSPDfo.cxx:102 AliITSOnlineSPDfo.cxx:103 AliITSOnlineSPDfo.cxx:104 AliITSOnlineSPDfo.cxx:105 AliITSOnlineSPDfo.cxx:106 AliITSOnlineSPDfo.cxx:107 AliITSOnlineSPDfo.cxx:108 AliITSOnlineSPDfo.cxx:109 AliITSOnlineSPDfo.cxx:110 AliITSOnlineSPDfo.cxx:111 AliITSOnlineSPDfo.cxx:112 AliITSOnlineSPDfo.cxx:113 AliITSOnlineSPDfo.cxx:114 AliITSOnlineSPDfo.cxx:115 AliITSOnlineSPDfo.cxx:116 AliITSOnlineSPDfo.cxx:117 AliITSOnlineSPDfo.cxx:118 AliITSOnlineSPDfo.cxx:119 AliITSOnlineSPDfo.cxx:120 AliITSOnlineSPDfo.cxx:121 AliITSOnlineSPDfo.cxx:122 AliITSOnlineSPDfo.cxx:123 AliITSOnlineSPDfo.cxx:124 AliITSOnlineSPDfo.cxx:125 AliITSOnlineSPDfo.cxx:126 AliITSOnlineSPDfo.cxx:127 AliITSOnlineSPDfo.cxx:128 AliITSOnlineSPDfo.cxx:129 AliITSOnlineSPDfo.cxx:130 AliITSOnlineSPDfo.cxx:131 AliITSOnlineSPDfo.cxx:132 AliITSOnlineSPDfo.cxx:133 AliITSOnlineSPDfo.cxx:134 AliITSOnlineSPDfo.cxx:135 AliITSOnlineSPDfo.cxx:136 AliITSOnlineSPDfo.cxx:137 AliITSOnlineSPDfo.cxx:138 AliITSOnlineSPDfo.cxx:139 AliITSOnlineSPDfo.cxx:140 AliITSOnlineSPDfo.cxx:141 AliITSOnlineSPDfo.cxx:142 AliITSOnlineSPDfo.cxx:143 AliITSOnlineSPDfo.cxx:144 AliITSOnlineSPDfo.cxx:145 AliITSOnlineSPDfo.cxx:146 AliITSOnlineSPDfo.cxx:147 AliITSOnlineSPDfo.cxx:148 AliITSOnlineSPDfo.cxx:149 AliITSOnlineSPDfo.cxx:150 AliITSOnlineSPDfo.cxx:151 AliITSOnlineSPDfo.cxx:152 AliITSOnlineSPDfo.cxx:153 AliITSOnlineSPDfo.cxx:154 AliITSOnlineSPDfo.cxx:155 AliITSOnlineSPDfo.cxx:156 AliITSOnlineSPDfo.cxx:157 AliITSOnlineSPDfo.cxx:158 AliITSOnlineSPDfo.cxx:159 AliITSOnlineSPDfo.cxx:160 AliITSOnlineSPDfo.cxx:161 AliITSOnlineSPDfo.cxx:162 AliITSOnlineSPDfo.cxx:163 AliITSOnlineSPDfo.cxx:164 AliITSOnlineSPDfo.cxx:165 AliITSOnlineSPDfo.cxx:166 AliITSOnlineSPDfo.cxx:167 AliITSOnlineSPDfo.cxx:168 AliITSOnlineSPDfo.cxx:169 AliITSOnlineSPDfo.cxx:170 AliITSOnlineSPDfo.cxx:171 AliITSOnlineSPDfo.cxx:172 AliITSOnlineSPDfo.cxx:173 AliITSOnlineSPDfo.cxx:174 AliITSOnlineSPDfo.cxx:175 AliITSOnlineSPDfo.cxx:176 AliITSOnlineSPDfo.cxx:177 AliITSOnlineSPDfo.cxx:178 AliITSOnlineSPDfo.cxx:179 AliITSOnlineSPDfo.cxx:180 AliITSOnlineSPDfo.cxx:181 AliITSOnlineSPDfo.cxx:182 AliITSOnlineSPDfo.cxx:183 AliITSOnlineSPDfo.cxx:184 AliITSOnlineSPDfo.cxx:185 AliITSOnlineSPDfo.cxx:186 AliITSOnlineSPDfo.cxx:187 AliITSOnlineSPDfo.cxx:188 AliITSOnlineSPDfo.cxx:189 AliITSOnlineSPDfo.cxx:190 AliITSOnlineSPDfo.cxx:191 AliITSOnlineSPDfo.cxx:192 AliITSOnlineSPDfo.cxx:193 AliITSOnlineSPDfo.cxx:194 AliITSOnlineSPDfo.cxx:195 AliITSOnlineSPDfo.cxx:196 AliITSOnlineSPDfo.cxx:197 AliITSOnlineSPDfo.cxx:198 AliITSOnlineSPDfo.cxx:199 AliITSOnlineSPDfo.cxx:200 AliITSOnlineSPDfo.cxx:201 AliITSOnlineSPDfo.cxx:202 AliITSOnlineSPDfo.cxx:203 AliITSOnlineSPDfo.cxx:204 AliITSOnlineSPDfo.cxx:205 AliITSOnlineSPDfo.cxx:206 AliITSOnlineSPDfo.cxx:207 AliITSOnlineSPDfo.cxx:208 AliITSOnlineSPDfo.cxx:209 AliITSOnlineSPDfo.cxx:210 AliITSOnlineSPDfo.cxx:211 AliITSOnlineSPDfo.cxx:212 AliITSOnlineSPDfo.cxx:213 AliITSOnlineSPDfo.cxx:214 AliITSOnlineSPDfo.cxx:215 AliITSOnlineSPDfo.cxx:216 AliITSOnlineSPDfo.cxx:217 AliITSOnlineSPDfo.cxx:218 AliITSOnlineSPDfo.cxx:219 AliITSOnlineSPDfo.cxx:220 AliITSOnlineSPDfo.cxx:221 AliITSOnlineSPDfo.cxx:222 AliITSOnlineSPDfo.cxx:223 AliITSOnlineSPDfo.cxx:224 AliITSOnlineSPDfo.cxx:225 AliITSOnlineSPDfo.cxx:226 AliITSOnlineSPDfo.cxx:227 AliITSOnlineSPDfo.cxx:228 AliITSOnlineSPDfo.cxx:229 AliITSOnlineSPDfo.cxx:230 AliITSOnlineSPDfo.cxx:231 AliITSOnlineSPDfo.cxx:232 AliITSOnlineSPDfo.cxx:233 AliITSOnlineSPDfo.cxx:234 AliITSOnlineSPDfo.cxx:235 AliITSOnlineSPDfo.cxx:236 AliITSOnlineSPDfo.cxx:237 AliITSOnlineSPDfo.cxx:238 AliITSOnlineSPDfo.cxx:239 AliITSOnlineSPDfo.cxx:240 AliITSOnlineSPDfo.cxx:241 AliITSOnlineSPDfo.cxx:242 AliITSOnlineSPDfo.cxx:243 AliITSOnlineSPDfo.cxx:244 AliITSOnlineSPDfo.cxx:245 AliITSOnlineSPDfo.cxx:246 AliITSOnlineSPDfo.cxx:247 AliITSOnlineSPDfo.cxx:248 AliITSOnlineSPDfo.cxx:249 AliITSOnlineSPDfo.cxx:250 AliITSOnlineSPDfo.cxx:251 AliITSOnlineSPDfo.cxx:252 AliITSOnlineSPDfo.cxx:253 AliITSOnlineSPDfo.cxx:254 AliITSOnlineSPDfo.cxx:255 AliITSOnlineSPDfo.cxx:256 AliITSOnlineSPDfo.cxx:257 AliITSOnlineSPDfo.cxx:258 AliITSOnlineSPDfo.cxx:259 AliITSOnlineSPDfo.cxx:260 AliITSOnlineSPDfo.cxx:261 AliITSOnlineSPDfo.cxx:262 AliITSOnlineSPDfo.cxx:263 AliITSOnlineSPDfo.cxx:264 AliITSOnlineSPDfo.cxx:265 AliITSOnlineSPDfo.cxx:266 AliITSOnlineSPDfo.cxx:267 AliITSOnlineSPDfo.cxx:268 AliITSOnlineSPDfo.cxx:269 AliITSOnlineSPDfo.cxx:270 AliITSOnlineSPDfo.cxx:271 AliITSOnlineSPDfo.cxx:272 AliITSOnlineSPDfo.cxx:273 AliITSOnlineSPDfo.cxx:274 AliITSOnlineSPDfo.cxx:275 AliITSOnlineSPDfo.cxx:276 AliITSOnlineSPDfo.cxx:277 AliITSOnlineSPDfo.cxx:278 AliITSOnlineSPDfo.cxx:279 AliITSOnlineSPDfo.cxx:280 AliITSOnlineSPDfo.cxx:281 AliITSOnlineSPDfo.cxx:282 AliITSOnlineSPDfo.cxx:283 AliITSOnlineSPDfo.cxx:284 AliITSOnlineSPDfo.cxx:285 AliITSOnlineSPDfo.cxx:286 AliITSOnlineSPDfo.cxx:287 AliITSOnlineSPDfo.cxx:288 AliITSOnlineSPDfo.cxx:289 AliITSOnlineSPDfo.cxx:290 AliITSOnlineSPDfo.cxx:291 AliITSOnlineSPDfo.cxx:292 AliITSOnlineSPDfo.cxx:293 AliITSOnlineSPDfo.cxx:294 AliITSOnlineSPDfo.cxx:295 AliITSOnlineSPDfo.cxx:296 AliITSOnlineSPDfo.cxx:297 AliITSOnlineSPDfo.cxx:298 AliITSOnlineSPDfo.cxx:299 AliITSOnlineSPDfo.cxx:300 AliITSOnlineSPDfo.cxx:301 AliITSOnlineSPDfo.cxx:302 AliITSOnlineSPDfo.cxx:303 AliITSOnlineSPDfo.cxx:304 AliITSOnlineSPDfo.cxx:305 AliITSOnlineSPDfo.cxx:306 AliITSOnlineSPDfo.cxx:307 AliITSOnlineSPDfo.cxx:308 AliITSOnlineSPDfo.cxx:309 AliITSOnlineSPDfo.cxx:310 AliITSOnlineSPDfo.cxx:311 AliITSOnlineSPDfo.cxx:312 AliITSOnlineSPDfo.cxx:313 AliITSOnlineSPDfo.cxx:314 AliITSOnlineSPDfo.cxx:315 AliITSOnlineSPDfo.cxx:316 AliITSOnlineSPDfo.cxx:317 AliITSOnlineSPDfo.cxx:318 AliITSOnlineSPDfo.cxx:319 AliITSOnlineSPDfo.cxx:320 AliITSOnlineSPDfo.cxx:321 AliITSOnlineSPDfo.cxx:322 AliITSOnlineSPDfo.cxx:323 AliITSOnlineSPDfo.cxx:324 AliITSOnlineSPDfo.cxx:325 AliITSOnlineSPDfo.cxx:326 AliITSOnlineSPDfo.cxx:327 AliITSOnlineSPDfo.cxx:328 AliITSOnlineSPDfo.cxx:329 AliITSOnlineSPDfo.cxx:330 AliITSOnlineSPDfo.cxx:331 AliITSOnlineSPDfo.cxx:332 AliITSOnlineSPDfo.cxx:333 AliITSOnlineSPDfo.cxx:334 AliITSOnlineSPDfo.cxx:335 AliITSOnlineSPDfo.cxx:336 AliITSOnlineSPDfo.cxx:337 AliITSOnlineSPDfo.cxx:338 AliITSOnlineSPDfo.cxx:339 AliITSOnlineSPDfo.cxx:340 AliITSOnlineSPDfo.cxx:341 AliITSOnlineSPDfo.cxx:342 AliITSOnlineSPDfo.cxx:343 AliITSOnlineSPDfo.cxx:344 AliITSOnlineSPDfo.cxx:345 AliITSOnlineSPDfo.cxx:346 AliITSOnlineSPDfo.cxx:347 AliITSOnlineSPDfo.cxx:348 AliITSOnlineSPDfo.cxx:349 AliITSOnlineSPDfo.cxx:350 AliITSOnlineSPDfo.cxx:351 AliITSOnlineSPDfo.cxx:352 AliITSOnlineSPDfo.cxx:353 AliITSOnlineSPDfo.cxx:354 AliITSOnlineSPDfo.cxx:355 AliITSOnlineSPDfo.cxx:356 AliITSOnlineSPDfo.cxx:357 AliITSOnlineSPDfo.cxx:358 AliITSOnlineSPDfo.cxx:359 AliITSOnlineSPDfo.cxx:360 AliITSOnlineSPDfo.cxx:361 AliITSOnlineSPDfo.cxx:362 AliITSOnlineSPDfo.cxx:363 AliITSOnlineSPDfo.cxx:364 AliITSOnlineSPDfo.cxx:365 AliITSOnlineSPDfo.cxx:366