#include "AliDCSSensorArray.h"
#include "AliLog.h"
#include <TMath.h>
ClassImp(AliDCSSensorArray)
const Double_t kSecInHour = 3600.;
const UInt_t kMinMapTime = 60;
AliDCSSensorArray::AliDCSSensorArray():TNamed(),
fMinGraph(10),
fMinPoints(10),
fIter(10),
fMaxDelta(0.0),
fFitReq(2),
fValCut(-1),
fDiffCut(-1),
fStartTime (2000,1,1,0,0,0),
fEndTime (2000,1,1,0,0,0),
fSensors(0)
{
}
AliDCSSensorArray::AliDCSSensorArray(TClonesArray *arr):TNamed(),
fMinGraph(10),
fMinPoints(10),
fIter(10),
fMaxDelta(0.0),
fFitReq(2),
fValCut(-1),
fDiffCut(-1),
fStartTime (2000,1,1,0,0,0),
fEndTime (2000,1,1,0,0,0),
fSensors(arr)
{
}
AliDCSSensorArray::AliDCSSensorArray(Int_t run, const char* dbEntry) :
TNamed(),
fMinGraph(10),
fMinPoints(10),
fIter(10),
fMaxDelta(0.0),
fFitReq(2),
fValCut(-1),
fDiffCut(-1),
fStartTime (2000,1,1,0,0,0),
fEndTime (2000,1,1,0,0,0),
fSensors(0)
{
AliCDBEntry *entry = AliCDBManager::Instance()->Get(dbEntry,run);
if (entry) {
TTree *tree = (TTree*) entry->GetObject();
fSensors = AliDCSSensor::ReadTree(tree);
} else {
AliError("Unable to load configuration from CDB!");
}
}
AliDCSSensorArray::AliDCSSensorArray(UInt_t startTime, UInt_t endTime,
TTree* confTree) :
TNamed(),
fMinGraph(10),
fMinPoints(10),
fIter(10),
fMaxDelta(0.0),
fFitReq(2),
fValCut(-1),
fDiffCut(-1),
fStartTime (2000,1,1,0,0,0),
fEndTime (2000,1,1,0,0,0),
fSensors(0)
{
fSensors = AliDCSSensor::ReadTree(confTree);
fSensors->BypassStreamer(kFALSE);
fStartTime = TTimeStamp((time_t)startTime,0);
fEndTime = TTimeStamp((time_t)endTime,0);
}
AliDCSSensorArray::AliDCSSensorArray(UInt_t startTime, UInt_t endTime,
TClonesArray *sensors) :
TNamed(),
fMinGraph(10),
fMinPoints(10),
fIter(10),
fMaxDelta(0.0),
fFitReq(2),
fValCut(-1),
fDiffCut(-1),
fStartTime (2000,1,1,0,0,0),
fEndTime (2000,1,1,0,0,0),
fSensors(sensors)
{
fStartTime = TTimeStamp((time_t)startTime,0);
fEndTime = TTimeStamp((time_t)endTime,0);
}
AliDCSSensorArray::AliDCSSensorArray(const AliDCSSensorArray &c):TNamed(c),
fMinGraph(c.fMinGraph),
fMinPoints(c.fMinPoints),
fIter(c.fIter),
fMaxDelta(c.fMaxDelta),
fFitReq(c.fFitReq),
fValCut(c.fValCut),
fDiffCut(c.fDiffCut),
fStartTime (c.fStartTime),
fEndTime (c.fEndTime),
fSensors(0)
{
fSensors = (TClonesArray*)c.fSensors->Clone();
}
AliDCSSensorArray::~AliDCSSensorArray()
{
fSensors->Delete();
delete fSensors;
}
AliDCSSensorArray &AliDCSSensorArray::operator=(const AliDCSSensorArray &c)
{
if (this != &c) {
fSensors->Delete();
new (this) AliDCSSensorArray(c);
fSensors = (TClonesArray*)c.fSensors->Clone();
}
return *this;
}
void AliDCSSensorArray::Print(const Option_t* option) const{
TString opt = option; opt.ToLower();
printf("%s:%s\n",GetTitle(), GetName());
if (!fSensors) return;
Int_t nsensors=fSensors->GetEntries();
for (Int_t i=0; i<nsensors; i++){
printf("Sensor Nr%d\n",i);
if (fSensors->At(i)) fSensors->At(i)->Print(option);
}
}
void AliDCSSensorArray::SetGraph(TMap *map)
{
Int_t nsensors = fSensors->GetEntries();
for ( Int_t isensor=0; isensor<nsensors; isensor++) {
AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
TString stringID = entry->GetStringID();
TGraph *gr = (TGraph*)map->GetValue(stringID.Data());
if ( gr !=0 ) {
entry->SetGraph((TGraph*)gr->Clone());
} else {
entry->SetGraph(0);
}
}
}
void AliDCSSensorArray::MakeSplineFit(TMap *map, Bool_t keepMap)
{
Int_t nsensors = fSensors->GetEntries();
for ( Int_t isensor=0; isensor<nsensors; isensor++) {
AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
TString stringID = entry->GetStringID();
TGraph *gr = (TGraph*)map->GetValue(stringID.Data());
if (!gr ) {
entry->SetFit(0);
entry->SetGraph(0);
AliWarning(Form("sensor %s: no input graph",stringID.Data()));
continue;
}
UInt_t timeDiff = entry->GetEndTime() - entry->GetStartTime();
if ( timeDiff < kMinMapTime ) {
AliWarning(Form("sensor %s: map length < 60 s, DCS graph kept.",stringID.Data()));
entry->SetGraph((TGraph*)gr->Clone());
} else {
AliSplineFit *fit = new AliSplineFit();
fit->SetMinPoints(fMinGraph);
fit->InitKnots(gr,fMinPoints,fIter,fMaxDelta);
fit->SplineFit(fFitReq);
fit->Cleanup();
if (fit->GetKnots()>0) {
entry->SetFit(fit);
} else {
AliWarning(Form("sensor %s: no fit performed, DCS graph kept.",stringID.Data()));
entry->SetGraph((TGraph*)gr->Clone());
}
}
if (keepMap) entry->SetGraph((TGraph*)gr->Clone());
}
}
void AliDCSSensorArray::MakeSplineFitAddPoints(TMap *map)
{
Int_t nsensors = fSensors->GetEntries();
for ( Int_t isensor=0; isensor<nsensors; isensor++) {
AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
TGraph *gr = entry->GetGraph();
if (!gr) {
gr = new TGraph();
entry->SetGraph(gr);
}
TString stringID = entry->GetStringID();
TGraph *grAdd = (TGraph*)map->GetValue(stringID.Data());
if (!grAdd ) return;
Int_t nPointsOld=gr->GetN();
Int_t nPointsAdd=grAdd->GetN();
gr->Expand(nPointsOld+nPointsAdd);
gr->Set(nPointsOld+nPointsAdd);
Double_t *addX=grAdd->GetX();
Double_t *addY=grAdd->GetY();
for (Int_t i=0;i<nPointsAdd;i++) {
gr->SetPoint(nPointsOld+i,addX[i],addY[i]);
}
AliSplineFit *fit = new AliSplineFit();
fit->SetMinPoints(fMinGraph);
fit->InitKnots(gr,fMinPoints,fIter,fMaxDelta);
fit->SplineFit(fFitReq);
fit->Cleanup();
if (fit->GetKnots()>0) {
AliSplineFit *oldFit = entry->GetFit();
if (oldFit) delete oldFit;
entry->SetFit(fit);
} else {
AliWarning(Form("sensor %s: no new fit performed. If available, old fit kept.",stringID.Data()));
}
}
}
Int_t AliDCSSensorArray::NumFits() const
{
Int_t nfit=0;
Int_t nsensors = fSensors->GetEntries();
for ( Int_t isensor=0; isensor<nsensors; isensor++) {
AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
if (entry->GetFit()) nfit++;
}
return nfit;
}
Double_t AliDCSSensorArray::GetValue(UInt_t timeSec, Int_t sensor)
{
AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(sensor);
return entry->GetValue(TTimeStamp((time_t)fStartTime.GetSec()+timeSec,0));
}
TMap* AliDCSSensorArray::ExtractDCS(TMap *dcsMap, Bool_t keepStart)
{
TMap *values = new TMap;
TObjArray * valueSet;
TTimeStamp startTime=fStartTime;
TTimeStamp endTime=fEndTime;
Int_t nsensors = fSensors->GetEntries();
for ( Int_t isensor=0; isensor<nsensors; isensor++) {
AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
TString stringID = entry->GetStringID();
TPair *pair = (TPair*)dcsMap->FindObject(stringID.Data());
if ( pair ) {
valueSet = (TObjArray*)pair->Value();
TGraph *graph = MakeGraph(valueSet,keepStart);
values->Add(new TObjString(stringID.Data()),graph);
entry->SetStartTime(fStartTime);
entry->SetEndTime(fEndTime);
}
}
fStartTime=startTime;
fEndTime=endTime;
return values;
}
TGraph* AliDCSSensorArray::MakeGraph(TObjArray* valueSet, Bool_t keepStart){
Int_t nentries = valueSet->GetEntriesFast();
if ( nentries == 0 ) return 0;
Float_t *x = new Float_t[nentries];
Float_t *y = new Float_t[nentries];
Int_t time0=0, previousTime=0;
TTimeStamp firstTime(0);
TTimeStamp lastTime(0);
if (keepStart) {
firstTime = fStartTime;
time0 = firstTime.GetSec();
}
Int_t out=0;
Int_t skipped=0;
AliDCSValue *val = (AliDCSValue *)valueSet->At(0);
AliDCSValue::Type type = val->GetType();
if ( type == AliDCSValue::kInvalid || type == AliDCSValue::kBool ) {
delete [] x;
delete [] y;
return 0;
}
Float_t value;
for (Int_t i=0; i<nentries; i++){
val = (AliDCSValue *)valueSet->At(i);
if (!val) continue;
if (time0==0){
time0=val->GetTimeStamp();
firstTime= TTimeStamp((time_t)val->GetTimeStamp(),0);
lastTime=TTimeStamp((time_t)val->GetTimeStamp(),0);
}
switch ( type )
{
case AliDCSValue::kFloat:
value = val->GetFloat();
break;
case AliDCSValue::kChar:
value = static_cast<Float_t>(val->GetChar());
break;
case AliDCSValue::kInt:
value = static_cast<Float_t>(val->GetInt());
break;
case AliDCSValue::kUInt:
value = static_cast<Float_t>(val->GetUInt());
break;
default:
continue;
}
if (fValCut>0 && TMath::Abs(value)>fValCut) continue;
if (fDiffCut>0 ) {
if ( out>0 && skipped<10 && TMath::Abs(value-y[out-1])>fDiffCut) {
skipped++;
continue;
}
skipped=0;
}
if (val->GetTimeStamp()-time0>1000000) continue;
if (val->GetTimeStamp()-previousTime < 1 ) continue;
previousTime=val->GetTimeStamp();
lastTime=TTimeStamp((time_t)val->GetTimeStamp(),0);
x[out] = (val->GetTimeStamp()-time0)/kSecInHour;
y[out] = value;
out++;
}
if (!keepStart) fStartTime=firstTime;
fEndTime=lastTime;
TGraph * graph = new TGraph(out,x,y);
delete [] x;
delete [] y;
return graph;
}
void AliDCSSensorArray::RemoveGraphDuplicates(Double_t tolerance){
Int_t nsensors = fSensors->GetEntries();
for ( Int_t isensor=0; isensor<nsensors; isensor++) {
AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
TGraph *graph = entry->GetGraph();
Double_t x=-999.,y=-999., x0=-999.,y0=-999.;
if (graph) {
Int_t npoints=graph->GetN();
if (npoints>1) {
for (Int_t i=npoints-1;i>0;i--) {
graph->GetPoint(i,x,y);
graph->GetPoint(i-1,x0,y0);
if ( TMath::Abs(y-y0) < TMath::Abs(tolerance*y0) ) graph->RemovePoint(i);
}
}
}
}
}
AliDCSSensor* AliDCSSensorArray::GetSensor(Int_t IdDCS)
{
Int_t nsensors = fSensors->GetEntries();
for (Int_t isensor=0; isensor<nsensors; isensor++) {
AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
if (entry->GetIdDCS() == IdDCS) return entry;
}
return 0;
}
AliDCSSensor* AliDCSSensorArray::GetSensor(const TString& stringID)
{
Int_t nsensors = fSensors->GetEntries();
for (Int_t isensor=0; isensor<nsensors; isensor++) {
AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
if (entry->GetStringID() == stringID) return entry;
}
return 0;
}
AliDCSSensor* AliDCSSensorArray::GetSensor(Double_t x, Double_t y, Double_t z)
{
Int_t nsensors = fSensors->GetEntries();
Double_t dist2min=1e99;
Double_t xs,ys,zs,dist2;
Int_t ind=-1;
for (Int_t isensor=0; isensor<nsensors; isensor++) {
AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
xs = entry->GetX();
ys = entry->GetY();
zs = entry->GetZ();
dist2 = (x-xs)*(x-xs) + (y-ys)*(y-ys) + (z-zs)*(z-zs);
if (dist2 < dist2min) {
ind=isensor;
dist2min = dist2;
}
}
if ( ind >= 0 ) {
return (AliDCSSensor*)fSensors->At(ind);
} else {
return 0;
}
}
AliDCSSensor* AliDCSSensorArray::GetSensorNum(Int_t ind)
{
return (AliDCSSensor*)fSensors->At(ind);
}
Int_t AliDCSSensorArray::SetSensor(const TString& stringID,
const AliDCSSensor& sensor)
{
Int_t nsensors = fSensors->GetEntries();
for (Int_t isensor=0; isensor<nsensors; isensor++) {
AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
if (entry->GetStringID() == stringID)
{
new ((*fSensors)[isensor])AliDCSSensor(sensor);
return isensor;
}
}
return -1;
}
void AliDCSSensorArray::SetSensorNum(const Int_t ind, const AliDCSSensor& sensor)
{
new ((*fSensors)[ind])AliDCSSensor(sensor);
return;
}
void AliDCSSensorArray::RemoveSensorNum(Int_t ind)
{
delete fSensors->RemoveAt(ind);
fSensors->Compress();
}
void AliDCSSensorArray::RemoveSensor(Int_t IdDCS)
{
Int_t nsensors = fSensors->GetEntries();
for (Int_t isensor=0; isensor<nsensors; isensor++) {
AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
if (entry->GetIdDCS()==IdDCS) {
delete fSensors->RemoveAt(isensor);
break;
}
}
fSensors->Compress();
}
TArrayI AliDCSSensorArray::OutsideThreshold(Double_t threshold, UInt_t timeSec, Bool_t below) const
{
Int_t nsensors = fSensors->GetEntries();
TArrayI array(nsensors);
Int_t outside=0;
for (Int_t isensor=0; isensor<nsensors; isensor++) {
AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
Double_t val=entry->GetValue(timeSec);
if (below) {
if (val<threshold) array[outside++] = entry->GetIdDCS();
} else {
if (val>threshold) array[outside++] = entry->GetIdDCS();
}
}
array.Set(outside);
return array;
}
Int_t AliDCSSensorArray::GetFirstIdDCS() const
{
if ( fSensors != 0 ) {
return ((AliDCSSensor*)fSensors->At(0))->GetIdDCS();
} else {
return 0;
}
}
Int_t AliDCSSensorArray::GetLastIdDCS() const
{
if ( fSensors != 0 ) {
Int_t last = fSensors->GetEntries();
return ((AliDCSSensor*)fSensors->At(last-1))->GetIdDCS();
} else {
return 0;
}
}
void AliDCSSensorArray::ClearGraph()
{
Int_t nsensors = fSensors->GetEntries();
for ( Int_t isensor=0; isensor<nsensors; isensor++) {
AliDCSSensor *sensor = (AliDCSSensor*)fSensors->At(isensor);
TGraph *gr = sensor->GetGraph();
if ( gr != 0 ) {
delete gr;
gr = 0;
}
sensor->SetGraph(0);
}
}
void AliDCSSensorArray::ClearFit()
{
Int_t nsensors = fSensors->GetEntries();
for ( Int_t isensor=0; isensor<nsensors; isensor++) {
AliDCSSensor *sensor = (AliDCSSensor*)fSensors->At(isensor);
AliSplineFit *fit = sensor->GetFit();
if ( fit != 0 ) {
delete fit;
fit = 0;
}
sensor->SetFit(0);
}
}
void AliDCSSensorArray::AddSensors(AliDCSSensorArray *newSensors)
{
Int_t numNew = newSensors->NumSensors();
Int_t numOld = fSensors->GetEntries();
fSensors->Expand(numOld+numNew);
for (Int_t i=0;i<numNew;i++) {
AliDCSSensor *sens = newSensors->GetSensorNum(i);
new ((*fSensors)[numOld+i]) AliDCSSensor(*sens);
}
}
AliDCSSensorArray.cxx:100 AliDCSSensorArray.cxx:101 AliDCSSensorArray.cxx:102 AliDCSSensorArray.cxx:103 AliDCSSensorArray.cxx:104 AliDCSSensorArray.cxx:105 AliDCSSensorArray.cxx:106 AliDCSSensorArray.cxx:107 AliDCSSensorArray.cxx:108 AliDCSSensorArray.cxx:109 AliDCSSensorArray.cxx:110 AliDCSSensorArray.cxx:111 AliDCSSensorArray.cxx:112 AliDCSSensorArray.cxx:113 AliDCSSensorArray.cxx:114 AliDCSSensorArray.cxx:115 AliDCSSensorArray.cxx:116 AliDCSSensorArray.cxx:117 AliDCSSensorArray.cxx:118 AliDCSSensorArray.cxx:119 AliDCSSensorArray.cxx:120 AliDCSSensorArray.cxx:121 AliDCSSensorArray.cxx:122 AliDCSSensorArray.cxx:123 AliDCSSensorArray.cxx:124 AliDCSSensorArray.cxx:125 AliDCSSensorArray.cxx:126 AliDCSSensorArray.cxx:127 AliDCSSensorArray.cxx:128 AliDCSSensorArray.cxx:129 AliDCSSensorArray.cxx:130 AliDCSSensorArray.cxx:131 AliDCSSensorArray.cxx:132 AliDCSSensorArray.cxx:133 AliDCSSensorArray.cxx:134 AliDCSSensorArray.cxx:135 AliDCSSensorArray.cxx:136 AliDCSSensorArray.cxx:137 AliDCSSensorArray.cxx:138 AliDCSSensorArray.cxx:139 AliDCSSensorArray.cxx:140 AliDCSSensorArray.cxx:141 AliDCSSensorArray.cxx:142 AliDCSSensorArray.cxx:143 AliDCSSensorArray.cxx:144 AliDCSSensorArray.cxx:145 AliDCSSensorArray.cxx:146 AliDCSSensorArray.cxx:147 AliDCSSensorArray.cxx:148 AliDCSSensorArray.cxx:149 AliDCSSensorArray.cxx:150 AliDCSSensorArray.cxx:151 AliDCSSensorArray.cxx:152 AliDCSSensorArray.cxx:153 AliDCSSensorArray.cxx:154 AliDCSSensorArray.cxx:155 AliDCSSensorArray.cxx:156 AliDCSSensorArray.cxx:157 AliDCSSensorArray.cxx:158 AliDCSSensorArray.cxx:159 AliDCSSensorArray.cxx:160 AliDCSSensorArray.cxx:161 AliDCSSensorArray.cxx:162 AliDCSSensorArray.cxx:163 AliDCSSensorArray.cxx:164 AliDCSSensorArray.cxx:165 AliDCSSensorArray.cxx:166 AliDCSSensorArray.cxx:167 AliDCSSensorArray.cxx:168 AliDCSSensorArray.cxx:169 AliDCSSensorArray.cxx:170 AliDCSSensorArray.cxx:171 AliDCSSensorArray.cxx:172 AliDCSSensorArray.cxx:173 AliDCSSensorArray.cxx:174 AliDCSSensorArray.cxx:175 AliDCSSensorArray.cxx:176 AliDCSSensorArray.cxx:177 AliDCSSensorArray.cxx:178 AliDCSSensorArray.cxx:179 AliDCSSensorArray.cxx:180 AliDCSSensorArray.cxx:181 AliDCSSensorArray.cxx:182 AliDCSSensorArray.cxx:183 AliDCSSensorArray.cxx:184 AliDCSSensorArray.cxx:185 AliDCSSensorArray.cxx:186 AliDCSSensorArray.cxx:187 AliDCSSensorArray.cxx:188 AliDCSSensorArray.cxx:189 AliDCSSensorArray.cxx:190 AliDCSSensorArray.cxx:191 AliDCSSensorArray.cxx:192 AliDCSSensorArray.cxx:193 AliDCSSensorArray.cxx:194 AliDCSSensorArray.cxx:195 AliDCSSensorArray.cxx:196 AliDCSSensorArray.cxx:197 AliDCSSensorArray.cxx:198 AliDCSSensorArray.cxx:199 AliDCSSensorArray.cxx:200 AliDCSSensorArray.cxx:201 AliDCSSensorArray.cxx:202 AliDCSSensorArray.cxx:203 AliDCSSensorArray.cxx:204 AliDCSSensorArray.cxx:205 AliDCSSensorArray.cxx:206 AliDCSSensorArray.cxx:207 AliDCSSensorArray.cxx:208 AliDCSSensorArray.cxx:209 AliDCSSensorArray.cxx:210 AliDCSSensorArray.cxx:211 AliDCSSensorArray.cxx:212 AliDCSSensorArray.cxx:213 AliDCSSensorArray.cxx:214 AliDCSSensorArray.cxx:215 AliDCSSensorArray.cxx:216 AliDCSSensorArray.cxx:217 AliDCSSensorArray.cxx:218 AliDCSSensorArray.cxx:219 AliDCSSensorArray.cxx:220 AliDCSSensorArray.cxx:221 AliDCSSensorArray.cxx:222 AliDCSSensorArray.cxx:223 AliDCSSensorArray.cxx:224 AliDCSSensorArray.cxx:225 AliDCSSensorArray.cxx:226 AliDCSSensorArray.cxx:227 AliDCSSensorArray.cxx:228 AliDCSSensorArray.cxx:229 AliDCSSensorArray.cxx:230 AliDCSSensorArray.cxx:231 AliDCSSensorArray.cxx:232 AliDCSSensorArray.cxx:233 AliDCSSensorArray.cxx:234 AliDCSSensorArray.cxx:235 AliDCSSensorArray.cxx:236 AliDCSSensorArray.cxx:237 AliDCSSensorArray.cxx:238 AliDCSSensorArray.cxx:239 AliDCSSensorArray.cxx:240 AliDCSSensorArray.cxx:241 AliDCSSensorArray.cxx:242 AliDCSSensorArray.cxx:243 AliDCSSensorArray.cxx:244 AliDCSSensorArray.cxx:245 AliDCSSensorArray.cxx:246 AliDCSSensorArray.cxx:247 AliDCSSensorArray.cxx:248 AliDCSSensorArray.cxx:249 AliDCSSensorArray.cxx:250 AliDCSSensorArray.cxx:251 AliDCSSensorArray.cxx:252 AliDCSSensorArray.cxx:253 AliDCSSensorArray.cxx:254 AliDCSSensorArray.cxx:255 AliDCSSensorArray.cxx:256 AliDCSSensorArray.cxx:257 AliDCSSensorArray.cxx:258 AliDCSSensorArray.cxx:259 AliDCSSensorArray.cxx:260 AliDCSSensorArray.cxx:261 AliDCSSensorArray.cxx:262 AliDCSSensorArray.cxx:263 AliDCSSensorArray.cxx:264 AliDCSSensorArray.cxx:265 AliDCSSensorArray.cxx:266 AliDCSSensorArray.cxx:267 AliDCSSensorArray.cxx:268 AliDCSSensorArray.cxx:269 AliDCSSensorArray.cxx:270 AliDCSSensorArray.cxx:271 AliDCSSensorArray.cxx:272 AliDCSSensorArray.cxx:273 AliDCSSensorArray.cxx:274 AliDCSSensorArray.cxx:275 AliDCSSensorArray.cxx:276 AliDCSSensorArray.cxx:277 AliDCSSensorArray.cxx:278 AliDCSSensorArray.cxx:279 AliDCSSensorArray.cxx:280 AliDCSSensorArray.cxx:281 AliDCSSensorArray.cxx:282 AliDCSSensorArray.cxx:283 AliDCSSensorArray.cxx:284 AliDCSSensorArray.cxx:285 AliDCSSensorArray.cxx:286 AliDCSSensorArray.cxx:287 AliDCSSensorArray.cxx:288 AliDCSSensorArray.cxx:289 AliDCSSensorArray.cxx:290 AliDCSSensorArray.cxx:291 AliDCSSensorArray.cxx:292 AliDCSSensorArray.cxx:293 AliDCSSensorArray.cxx:294 AliDCSSensorArray.cxx:295 AliDCSSensorArray.cxx:296 AliDCSSensorArray.cxx:297 AliDCSSensorArray.cxx:298 AliDCSSensorArray.cxx:299 AliDCSSensorArray.cxx:300 AliDCSSensorArray.cxx:301 AliDCSSensorArray.cxx:302 AliDCSSensorArray.cxx:303 AliDCSSensorArray.cxx:304 AliDCSSensorArray.cxx:305 AliDCSSensorArray.cxx:306 AliDCSSensorArray.cxx:307 AliDCSSensorArray.cxx:308 AliDCSSensorArray.cxx:309 AliDCSSensorArray.cxx:310 AliDCSSensorArray.cxx:311 AliDCSSensorArray.cxx:312 AliDCSSensorArray.cxx:313 AliDCSSensorArray.cxx:314 AliDCSSensorArray.cxx:315 AliDCSSensorArray.cxx:316 AliDCSSensorArray.cxx:317 AliDCSSensorArray.cxx:318 AliDCSSensorArray.cxx:319 AliDCSSensorArray.cxx:320 AliDCSSensorArray.cxx:321 AliDCSSensorArray.cxx:322 AliDCSSensorArray.cxx:323 AliDCSSensorArray.cxx:324 AliDCSSensorArray.cxx:325 AliDCSSensorArray.cxx:326 AliDCSSensorArray.cxx:327 AliDCSSensorArray.cxx:328 AliDCSSensorArray.cxx:329 AliDCSSensorArray.cxx:330 AliDCSSensorArray.cxx:331 AliDCSSensorArray.cxx:332 AliDCSSensorArray.cxx:333 AliDCSSensorArray.cxx:334 AliDCSSensorArray.cxx:335 AliDCSSensorArray.cxx:336 AliDCSSensorArray.cxx:337 AliDCSSensorArray.cxx:338 AliDCSSensorArray.cxx:339 AliDCSSensorArray.cxx:340 AliDCSSensorArray.cxx:341 AliDCSSensorArray.cxx:342 AliDCSSensorArray.cxx:343 AliDCSSensorArray.cxx:344 AliDCSSensorArray.cxx:345 AliDCSSensorArray.cxx:346 AliDCSSensorArray.cxx:347 AliDCSSensorArray.cxx:348 AliDCSSensorArray.cxx:349 AliDCSSensorArray.cxx:350 AliDCSSensorArray.cxx:351 AliDCSSensorArray.cxx:352 AliDCSSensorArray.cxx:353 AliDCSSensorArray.cxx:354 AliDCSSensorArray.cxx:355 AliDCSSensorArray.cxx:356 AliDCSSensorArray.cxx:357 AliDCSSensorArray.cxx:358 AliDCSSensorArray.cxx:359 AliDCSSensorArray.cxx:360 AliDCSSensorArray.cxx:361 AliDCSSensorArray.cxx:362 AliDCSSensorArray.cxx:363 AliDCSSensorArray.cxx:364 AliDCSSensorArray.cxx:365 AliDCSSensorArray.cxx:366 AliDCSSensorArray.cxx:367 AliDCSSensorArray.cxx:368 AliDCSSensorArray.cxx:369 AliDCSSensorArray.cxx:370 AliDCSSensorArray.cxx:371 AliDCSSensorArray.cxx:372 AliDCSSensorArray.cxx:373 AliDCSSensorArray.cxx:374 AliDCSSensorArray.cxx:375 AliDCSSensorArray.cxx:376 AliDCSSensorArray.cxx:377 AliDCSSensorArray.cxx:378 AliDCSSensorArray.cxx:379 AliDCSSensorArray.cxx:380 AliDCSSensorArray.cxx:381 AliDCSSensorArray.cxx:382 AliDCSSensorArray.cxx:383 AliDCSSensorArray.cxx:384 AliDCSSensorArray.cxx:385 AliDCSSensorArray.cxx:386 AliDCSSensorArray.cxx:387 AliDCSSensorArray.cxx:388 AliDCSSensorArray.cxx:389 AliDCSSensorArray.cxx:390 AliDCSSensorArray.cxx:391 AliDCSSensorArray.cxx:392 AliDCSSensorArray.cxx:393 AliDCSSensorArray.cxx:394 AliDCSSensorArray.cxx:395 AliDCSSensorArray.cxx:396 AliDCSSensorArray.cxx:397 AliDCSSensorArray.cxx:398 AliDCSSensorArray.cxx:399 AliDCSSensorArray.cxx:400 AliDCSSensorArray.cxx:401 AliDCSSensorArray.cxx:402 AliDCSSensorArray.cxx:403 AliDCSSensorArray.cxx:404 AliDCSSensorArray.cxx:405 AliDCSSensorArray.cxx:406 AliDCSSensorArray.cxx:407 AliDCSSensorArray.cxx:408 AliDCSSensorArray.cxx:409 AliDCSSensorArray.cxx:410 AliDCSSensorArray.cxx:411 AliDCSSensorArray.cxx:412 AliDCSSensorArray.cxx:413 AliDCSSensorArray.cxx:414 AliDCSSensorArray.cxx:415 AliDCSSensorArray.cxx:416 AliDCSSensorArray.cxx:417 AliDCSSensorArray.cxx:418 AliDCSSensorArray.cxx:419 AliDCSSensorArray.cxx:420 AliDCSSensorArray.cxx:421 AliDCSSensorArray.cxx:422 AliDCSSensorArray.cxx:423 AliDCSSensorArray.cxx:424 AliDCSSensorArray.cxx:425 AliDCSSensorArray.cxx:426 AliDCSSensorArray.cxx:427 AliDCSSensorArray.cxx:428 AliDCSSensorArray.cxx:429 AliDCSSensorArray.cxx:430 AliDCSSensorArray.cxx:431 AliDCSSensorArray.cxx:432 AliDCSSensorArray.cxx:433 AliDCSSensorArray.cxx:434 AliDCSSensorArray.cxx:435 AliDCSSensorArray.cxx:436 AliDCSSensorArray.cxx:437 AliDCSSensorArray.cxx:438 AliDCSSensorArray.cxx:439 AliDCSSensorArray.cxx:440 AliDCSSensorArray.cxx:441 AliDCSSensorArray.cxx:442 AliDCSSensorArray.cxx:443 AliDCSSensorArray.cxx:444 AliDCSSensorArray.cxx:445 AliDCSSensorArray.cxx:446 AliDCSSensorArray.cxx:447 AliDCSSensorArray.cxx:448 AliDCSSensorArray.cxx:449 AliDCSSensorArray.cxx:450 AliDCSSensorArray.cxx:451 AliDCSSensorArray.cxx:452 AliDCSSensorArray.cxx:453 AliDCSSensorArray.cxx:454 AliDCSSensorArray.cxx:455 AliDCSSensorArray.cxx:456 AliDCSSensorArray.cxx:457 AliDCSSensorArray.cxx:458 AliDCSSensorArray.cxx:459 AliDCSSensorArray.cxx:460 AliDCSSensorArray.cxx:461 AliDCSSensorArray.cxx:462 AliDCSSensorArray.cxx:463 AliDCSSensorArray.cxx:464 AliDCSSensorArray.cxx:465 AliDCSSensorArray.cxx:466 AliDCSSensorArray.cxx:467 AliDCSSensorArray.cxx:468 AliDCSSensorArray.cxx:469 AliDCSSensorArray.cxx:470 AliDCSSensorArray.cxx:471 AliDCSSensorArray.cxx:472 AliDCSSensorArray.cxx:473 AliDCSSensorArray.cxx:474 AliDCSSensorArray.cxx:475 AliDCSSensorArray.cxx:476 AliDCSSensorArray.cxx:477 AliDCSSensorArray.cxx:478 AliDCSSensorArray.cxx:479 AliDCSSensorArray.cxx:480 AliDCSSensorArray.cxx:481 AliDCSSensorArray.cxx:482 AliDCSSensorArray.cxx:483 AliDCSSensorArray.cxx:484 AliDCSSensorArray.cxx:485 AliDCSSensorArray.cxx:486 AliDCSSensorArray.cxx:487 AliDCSSensorArray.cxx:488 AliDCSSensorArray.cxx:489 AliDCSSensorArray.cxx:490 AliDCSSensorArray.cxx:491 AliDCSSensorArray.cxx:492 AliDCSSensorArray.cxx:493 AliDCSSensorArray.cxx:494 AliDCSSensorArray.cxx:495 AliDCSSensorArray.cxx:496 AliDCSSensorArray.cxx:497 AliDCSSensorArray.cxx:498 AliDCSSensorArray.cxx:499 AliDCSSensorArray.cxx:500 AliDCSSensorArray.cxx:501 AliDCSSensorArray.cxx:502 AliDCSSensorArray.cxx:503 AliDCSSensorArray.cxx:504 AliDCSSensorArray.cxx:505 AliDCSSensorArray.cxx:506 AliDCSSensorArray.cxx:507 AliDCSSensorArray.cxx:508 AliDCSSensorArray.cxx:509 AliDCSSensorArray.cxx:510 AliDCSSensorArray.cxx:511 AliDCSSensorArray.cxx:512 AliDCSSensorArray.cxx:513 AliDCSSensorArray.cxx:514 AliDCSSensorArray.cxx:515 AliDCSSensorArray.cxx:516 AliDCSSensorArray.cxx:517 AliDCSSensorArray.cxx:518 AliDCSSensorArray.cxx:519 AliDCSSensorArray.cxx:520 AliDCSSensorArray.cxx:521 AliDCSSensorArray.cxx:522 AliDCSSensorArray.cxx:523 AliDCSSensorArray.cxx:524 AliDCSSensorArray.cxx:525 AliDCSSensorArray.cxx:526 AliDCSSensorArray.cxx:527 AliDCSSensorArray.cxx:528 AliDCSSensorArray.cxx:529 AliDCSSensorArray.cxx:530 AliDCSSensorArray.cxx:531 AliDCSSensorArray.cxx:532 AliDCSSensorArray.cxx:533 AliDCSSensorArray.cxx:534 AliDCSSensorArray.cxx:535 AliDCSSensorArray.cxx:536 AliDCSSensorArray.cxx:537 AliDCSSensorArray.cxx:538 AliDCSSensorArray.cxx:539 AliDCSSensorArray.cxx:540 AliDCSSensorArray.cxx:541 AliDCSSensorArray.cxx:542 AliDCSSensorArray.cxx:543 AliDCSSensorArray.cxx:544 AliDCSSensorArray.cxx:545 AliDCSSensorArray.cxx:546 AliDCSSensorArray.cxx:547 AliDCSSensorArray.cxx:548 AliDCSSensorArray.cxx:549 AliDCSSensorArray.cxx:550 AliDCSSensorArray.cxx:551 AliDCSSensorArray.cxx:552 AliDCSSensorArray.cxx:553 AliDCSSensorArray.cxx:554 AliDCSSensorArray.cxx:555 AliDCSSensorArray.cxx:556 AliDCSSensorArray.cxx:557 AliDCSSensorArray.cxx:558 AliDCSSensorArray.cxx:559 AliDCSSensorArray.cxx:560 AliDCSSensorArray.cxx:561 AliDCSSensorArray.cxx:562 AliDCSSensorArray.cxx:563 AliDCSSensorArray.cxx:564 AliDCSSensorArray.cxx:565 AliDCSSensorArray.cxx:566 AliDCSSensorArray.cxx:567 AliDCSSensorArray.cxx:568 AliDCSSensorArray.cxx:569 AliDCSSensorArray.cxx:570 AliDCSSensorArray.cxx:571 AliDCSSensorArray.cxx:572 AliDCSSensorArray.cxx:573 AliDCSSensorArray.cxx:574 AliDCSSensorArray.cxx:575 AliDCSSensorArray.cxx:576 AliDCSSensorArray.cxx:577 AliDCSSensorArray.cxx:578 AliDCSSensorArray.cxx:579 AliDCSSensorArray.cxx:580 AliDCSSensorArray.cxx:581 AliDCSSensorArray.cxx:582 AliDCSSensorArray.cxx:583 AliDCSSensorArray.cxx:584 AliDCSSensorArray.cxx:585 AliDCSSensorArray.cxx:586 AliDCSSensorArray.cxx:587 AliDCSSensorArray.cxx:588 AliDCSSensorArray.cxx:589 AliDCSSensorArray.cxx:590 AliDCSSensorArray.cxx:591 AliDCSSensorArray.cxx:592 AliDCSSensorArray.cxx:593 AliDCSSensorArray.cxx:594 AliDCSSensorArray.cxx:595 AliDCSSensorArray.cxx:596 AliDCSSensorArray.cxx:597 AliDCSSensorArray.cxx:598 AliDCSSensorArray.cxx:599 AliDCSSensorArray.cxx:600 AliDCSSensorArray.cxx:601 AliDCSSensorArray.cxx:602 AliDCSSensorArray.cxx:603 AliDCSSensorArray.cxx:604 AliDCSSensorArray.cxx:605 AliDCSSensorArray.cxx:606 AliDCSSensorArray.cxx:607 AliDCSSensorArray.cxx:608 AliDCSSensorArray.cxx:609 AliDCSSensorArray.cxx:610 AliDCSSensorArray.cxx:611 AliDCSSensorArray.cxx:612 AliDCSSensorArray.cxx:613 AliDCSSensorArray.cxx:614 AliDCSSensorArray.cxx:615 AliDCSSensorArray.cxx:616 AliDCSSensorArray.cxx:617 AliDCSSensorArray.cxx:618 AliDCSSensorArray.cxx:619 AliDCSSensorArray.cxx:620 AliDCSSensorArray.cxx:621 AliDCSSensorArray.cxx:622 AliDCSSensorArray.cxx:623 AliDCSSensorArray.cxx:624 AliDCSSensorArray.cxx:625 AliDCSSensorArray.cxx:626 AliDCSSensorArray.cxx:627 AliDCSSensorArray.cxx:628 AliDCSSensorArray.cxx:629 AliDCSSensorArray.cxx:630 AliDCSSensorArray.cxx:631 AliDCSSensorArray.cxx:632 AliDCSSensorArray.cxx:633 AliDCSSensorArray.cxx:634 AliDCSSensorArray.cxx:635 AliDCSSensorArray.cxx:636 AliDCSSensorArray.cxx:637 AliDCSSensorArray.cxx:638 AliDCSSensorArray.cxx:639 AliDCSSensorArray.cxx:640 AliDCSSensorArray.cxx:641 AliDCSSensorArray.cxx:642 AliDCSSensorArray.cxx:643 AliDCSSensorArray.cxx:644 AliDCSSensorArray.cxx:645 AliDCSSensorArray.cxx:646 AliDCSSensorArray.cxx:647 AliDCSSensorArray.cxx:648 AliDCSSensorArray.cxx:649 AliDCSSensorArray.cxx:650 AliDCSSensorArray.cxx:651 AliDCSSensorArray.cxx:652 AliDCSSensorArray.cxx:653 AliDCSSensorArray.cxx:654 AliDCSSensorArray.cxx:655 AliDCSSensorArray.cxx:656 AliDCSSensorArray.cxx:657 AliDCSSensorArray.cxx:658 AliDCSSensorArray.cxx:659 AliDCSSensorArray.cxx:660 AliDCSSensorArray.cxx:661 AliDCSSensorArray.cxx:662 AliDCSSensorArray.cxx:663 AliDCSSensorArray.cxx:664 AliDCSSensorArray.cxx:665 AliDCSSensorArray.cxx:666 AliDCSSensorArray.cxx:667 AliDCSSensorArray.cxx:668 AliDCSSensorArray.cxx:669 AliDCSSensorArray.cxx:670 AliDCSSensorArray.cxx:671 AliDCSSensorArray.cxx:672 AliDCSSensorArray.cxx:673 AliDCSSensorArray.cxx:674 AliDCSSensorArray.cxx:675 AliDCSSensorArray.cxx:676 AliDCSSensorArray.cxx:677 AliDCSSensorArray.cxx:678 AliDCSSensorArray.cxx:679 AliDCSSensorArray.cxx:680 AliDCSSensorArray.cxx:681 AliDCSSensorArray.cxx:682 AliDCSSensorArray.cxx:683 AliDCSSensorArray.cxx:684 AliDCSSensorArray.cxx:685 AliDCSSensorArray.cxx:686 AliDCSSensorArray.cxx:687 AliDCSSensorArray.cxx:688 AliDCSSensorArray.cxx:689 AliDCSSensorArray.cxx:690 AliDCSSensorArray.cxx:691 AliDCSSensorArray.cxx:692 AliDCSSensorArray.cxx:693 AliDCSSensorArray.cxx:694 AliDCSSensorArray.cxx:695 AliDCSSensorArray.cxx:696 AliDCSSensorArray.cxx:697 AliDCSSensorArray.cxx:698 AliDCSSensorArray.cxx:699 AliDCSSensorArray.cxx:700 AliDCSSensorArray.cxx:701 AliDCSSensorArray.cxx:702 AliDCSSensorArray.cxx:703