ROOT logo
////////////////////////////////////////////////////////////////////////////////////
// Author: Henrik Tydesjo                                                         //
//                                                                                //
// Implementation of conditions data from Pixel Trigger (PIT)                     //
//                                                                                //
// The information is propagated from pixel trigger system to DCS file exchange   //
// server (text file format). The ReadFromTextFile method will populate this      //
// object with the values from the text file. Via a Preprocessor, this object     //
// can be stored in OCDB.                                                         //
//                                                                                //
// One can also manually create conditions data that may be interesting for       //
// simulation.                                                                    //
//                                                                                //
////////////////////////////////////////////////////////////////////////////////////

#include "AliITSTriggerConditions.h"
#include "AliITSTriggerAlgorithmConditions.h"
#include <TError.h>
#include <fstream>

using std::ifstream;
ClassImp(AliITSTriggerConditions)

//__________________________________________________________________________________
AliITSTriggerConditions::AliITSTriggerConditions() :
TObject(),
fRunNumber(0),
fFirmWareVersion(0),
fGlobalDescription("n/a"),
fVersionRegister(0),
fInputConditionsVersion(0),
fParametersVersion(0),
fInActiveChips(1200),
fNumAlgo(0),
fAlgoList(TObjArray(10))
{
  // default constructor
  fAlgoList.SetOwner(kTRUE);
}
//__________________________________________________________________________________
AliITSTriggerConditions::AliITSTriggerConditions(const AliITSTriggerConditions& cond) :
TObject(),
fRunNumber(cond.fRunNumber),
fFirmWareVersion(cond.fFirmWareVersion),
fGlobalDescription(cond.fGlobalDescription),
fVersionRegister(cond.fVersionRegister),
fInputConditionsVersion(cond.fInputConditionsVersion),
fParametersVersion(cond.fParametersVersion),
fInActiveChips(cond.fInActiveChips),
fNumAlgo(cond.fNumAlgo),
fAlgoList(cond.fAlgoList)
{
  // copy constructor
  fAlgoList.SetOwner(kTRUE);
}
//__________________________________________________________________________________
AliITSTriggerConditions::~AliITSTriggerConditions() 
{
  // destructor
  ClearAlgorithms();
}
//______________________________________________________________________
AliITSTriggerConditions& AliITSTriggerConditions::operator=(const AliITSTriggerConditions& cond) {
  // assignment operator
  if (this!=&cond) {
    fRunNumber = cond.fRunNumber;
    fFirmWareVersion = cond.fFirmWareVersion;
    fGlobalDescription = cond.fGlobalDescription;
    fVersionRegister = cond.fVersionRegister;
    fInputConditionsVersion = cond.fInputConditionsVersion;
    fParametersVersion = cond.fParametersVersion;
    fInActiveChips = cond.fInActiveChips;
    fNumAlgo = cond.fNumAlgo;
    fAlgoList = cond.fAlgoList;
  }
  return *this;
}
//__________________________________________________________________________________
void AliITSTriggerConditions::DumpAll() const {
  // Dumps all conditions data. This is as it is shown in PVSS, whereas the content of
  // the txt file they are read from has a swap in the chip numbering

  printf("[Header]\n");
  printf("RUN_NUMBER = %d\n",fRunNumber);
  printf("PROCESSING_FIRMWARE_VERSION = %d\n",fFirmWareVersion);
  printf("GLOBAL_DESCRIPTION = %s\n",fGlobalDescription.Data());
  printf("VERSION_REGISTER_VALUE = %d\n",fVersionRegister);
  printf("INPUT_CONDITIONS_VERSION = %d\n",fInputConditionsVersion);
  printf("PARAMETERS_VERSION = %d\n",fParametersVersion);
  printf("\n");

  printf("[Outputs]\n");
  for (UInt_t i=0; i<fNumAlgo; i++) {
    printf("%d = '%s', '%s'\n", GetAlgoIDI(i), GetAlgoLabelI(i), GetAlgoDescriptionI(i));
  }
  printf("\n");

  printf("[Output_parameters]\n");
  for (UInt_t i=0; i<fNumAlgo; i++) {
    printf("%d =", GetAlgoIDI(i));
    for (Short_t p=0; p<GetNumAlgoParamI(i); p++) {
      printf(" '%s', %d;", GetAlgoParamNameII(i,p), GetAlgoParamValueII(i,p));
    }
    printf("\n");
  }
  printf("\n");

  printf("[Active_chips]\n");
  for (UInt_t eq=0; eq<20; eq++) {
    for (UInt_t hs=0; hs<6; hs++) {
      UInt_t nActiveOnHs = 0;
      TString inactiveStr = "";
      for (UInt_t chip=0; chip<10; chip++) {
	Bool_t isChipActive = IsChipActive(eq,hs,chip);
	inactiveStr.Append(Form("%d",isChipActive));
	nActiveOnHs+=isChipActive;
      }
      if (nActiveOnHs<10) {
	printf("%d,%c,%d=%s\n", eq%10, eq<10 ? 'A' : 'C', hs, inactiveStr.Data());
      }
    }
  }

}
//__________________________________________________________________________________
void AliITSTriggerConditions::ResetAll() {
  // clear all data, and put default values
  fRunNumber=0;
  fFirmWareVersion=0;
  fGlobalDescription="n/a";
  fVersionRegister=0;
  fInputConditionsVersion=0;
  fParametersVersion=0;
  ResetInActiveChips();
  ClearAlgorithms();
}
//__________________________________________________________________________________
void AliITSTriggerConditions::ClearAlgorithms() {
  // clears the list of algorithms
  fAlgoList.Clear();
  fNumAlgo=0;
}
//__________________________________________________________________________________
void AliITSTriggerConditions::ClearAlgoParamsI(UShort_t aIndex) {
  // clears the list of parameters for algorithm with index aIndex  
  if (aIndex>=fNumAlgo) {
    Error("AliITSTriggerConditions::ClearAlgoParamsI", "index %d out of range", aIndex);
    return;
  }
  ((AliITSTriggerAlgorithmConditions*)fAlgoList.At(aIndex))->ClearParams();
}
//__________________________________________________________________________________
void AliITSTriggerConditions::ClearAlgoParamsL(const Char_t* aLabel) {
  // clears the list of parameters for algorithm with label aLabel
  UShort_t findIndex=fNumAlgo;
  for (UInt_t i=0; i<fNumAlgo; i++) {
    if (strcmp(((AliITSTriggerAlgorithmConditions*)fAlgoList.At(i))->GetLabel(),aLabel) == 0) {
      findIndex = i;
      break;
    }
  }
  if (findIndex==fNumAlgo) {
    Error("AliITSTriggerConditions::ClearAlgoParamsL", "label %s not found", aLabel);
  }
  ((AliITSTriggerAlgorithmConditions*)fAlgoList.At(findIndex))->ClearParams();
}
//__________________________________________________________________________________
void AliITSTriggerConditions::AddAlgo(UShort_t id, const Char_t* aLabel, const Char_t* aDescr) {
  // adds a new algorithm with id 'id', label aLabel, and description aDescr
  // if the id or label is already used in the list of algorithms, the old entry will be over-written
  UShort_t findIndex=fNumAlgo;
  for (UInt_t i=0; i<fNumAlgo; i++) {
    if (strcmp(((AliITSTriggerAlgorithmConditions*)fAlgoList.At(i))->GetLabel(), aLabel) == 0 || 
	((AliITSTriggerAlgorithmConditions*)fAlgoList.At(i))->GetID() == id ) {
      findIndex = i;
      break;
    }
  }
  if (findIndex<fNumAlgo) {
    delete fAlgoList.At(findIndex);
    fAlgoList.AddAt(new AliITSTriggerAlgorithmConditions(id,aLabel,aDescr),findIndex);
  }
  else {
    fAlgoList.AddAtAndExpand(new AliITSTriggerAlgorithmConditions(id,aLabel,aDescr),fNumAlgo);
    fNumAlgo++;
  }
}
//__________________________________________________________________________________
void AliITSTriggerConditions::AddAlgoParam(UShort_t id, const Char_t* name, Int_t value) {
  // adds a new parameter with name 'name' and value 'value', for the algorithm with id 'id'
  UShort_t findIndex=fNumAlgo;
  for (UInt_t i=0; i<fNumAlgo; i++) {
    if (((AliITSTriggerAlgorithmConditions*)fAlgoList.At(i))->GetID() == id) {
      findIndex = i;
      break;
    }
  }
  if (findIndex==fNumAlgo) {
    Error("AliITSTriggerConditions::AddAlgoParam", "id %d not found", id);
    return;
  }
  ((AliITSTriggerAlgorithmConditions*)fAlgoList.At(findIndex))->AddParam(name, value);
}
//__________________________________________________________________________________
Short_t AliITSTriggerConditions::GetAlgoIndexL(const Char_t* aLabel) const {
  // returns the index for the algorithm with label aLabel
  UShort_t findIndex=fNumAlgo;
  for (UInt_t i=0; i<fNumAlgo; i++) {
    if (strcmp(((AliITSTriggerAlgorithmConditions*)fAlgoList.At(i))->GetLabel(), aLabel) == 0) {
      findIndex = i;
      break;
    }
  }
  if (findIndex==fNumAlgo) {
    Error("AliITSTriggerConditions::GetAlgoIndexL", "label %s not found", aLabel);
    return -1;
  }
  return findIndex;
}
//__________________________________________________________________________________
Short_t AliITSTriggerConditions::GetAlgoIDI(UShort_t aIndex) const {
  // returns the ID for the algorithm with index aIndex (in real life, could be 1-10)
  if (aIndex>=fNumAlgo) {
    Error("AliITSTriggerConditions::GetAlgoIDI", "index %d out of range", aIndex);
    return -1;
  }
  return ((AliITSTriggerAlgorithmConditions*)fAlgoList.At(aIndex))->GetID();
}
//__________________________________________________________________________________
const Char_t* AliITSTriggerConditions::GetAlgoLabelI(UShort_t aIndex) const {
  // returns the label for the algorithm with index aIndex
  if (aIndex>=fNumAlgo) {
    Error("AliITSTriggerConditions::GetAlgoLabelI", "index %d out of range", aIndex);
    return "";
  }
  return ((AliITSTriggerAlgorithmConditions*)fAlgoList.At(aIndex))->GetLabel();
}
//__________________________________________________________________________________
const Char_t* AliITSTriggerConditions::GetAlgoDescriptionI(UShort_t aIndex) const {
  // returns the description for the algorithm with index aIndex
  if (aIndex>=fNumAlgo) {
    Error("AliITSTriggerConditions::GetAlgoDescriptionI", "index %d out of range", aIndex);
    return "";
  }
  return ((AliITSTriggerAlgorithmConditions*)fAlgoList.At(aIndex))->GetDescription();
}
//__________________________________________________________________________________
Short_t AliITSTriggerConditions::GetNumAlgoParamI(UShort_t aIndex) const {
  // returns the number of parameters, corresponding to the algorithm with index aIndex
  if (aIndex>=fNumAlgo) {
    Error("AliITSTriggerConditions::GetNumAlgoParamI", "index %d out of range", aIndex);
    return -1;
  }
  return ((AliITSTriggerAlgorithmConditions*)fAlgoList.At(aIndex))->GetNumParam();
}
//__________________________________________________________________________________
const Char_t* AliITSTriggerConditions::GetAlgoParamNameII(UShort_t aIndex, UShort_t pIndex) const {
  // returns the parameter name for the parameter with index pIndex, corresponding to the algorithm with index aIndex
  if (aIndex>=fNumAlgo) {
    Error("AliITSTriggerConditions::GetAlgoParamNameII", "index %d out of range", aIndex);
    return "";
  }
  return ((AliITSTriggerAlgorithmConditions*)fAlgoList.At(aIndex))->GetParamNameI(pIndex);
}
//__________________________________________________________________________________
Int_t AliITSTriggerConditions::GetAlgoParamValueII(UShort_t aIndex, UShort_t pIndex) const {
  // returns the parameter value for the parameter with index pIndex, corresponding to the algorithm with index aIndex
  if (aIndex>=fNumAlgo) {
    Error("AliITSTriggerConditions::GetAlgoParamValueII", "index %d out of range", aIndex);
    return -1;
  }
  return ((AliITSTriggerAlgorithmConditions*)fAlgoList.At(aIndex))->GetParamValueI(pIndex);
}
//__________________________________________________________________________________
Int_t AliITSTriggerConditions::GetAlgoParamValueIN(UShort_t aIndex, const Char_t* pName) const {
  // returns parameter value for the parameter named pName, corresponding to the algorithm with index aIndex
  if (aIndex>=fNumAlgo) {
    Error("AliITSTriggerConditions::GetAlgoParamValueIN", "index %d out of range", aIndex);
    return -1;
  }
  return ((AliITSTriggerAlgorithmConditions*)fAlgoList.At(aIndex))->GetParamValueN(pName);
}
//__________________________________________________________________________________
Short_t AliITSTriggerConditions::GetNumAlgoParamL(const Char_t* aLabel) const {
  // returns the number of parameters, corresponding to the algorithm with label aLabel
  UShort_t findIndex=fNumAlgo;
  for (UInt_t i=0; i<fNumAlgo; i++) {
    if (strcmp(((AliITSTriggerAlgorithmConditions*)fAlgoList.At(i))->GetLabel(), aLabel) == 0) {
      findIndex = i;
      break;
    }
  }
  if (findIndex==fNumAlgo) {
    Error("AliITSTriggerConditions::GetNumAlgoParamL", "label %s not found", aLabel);
    return -1;
  }
  return ((AliITSTriggerAlgorithmConditions*)fAlgoList.At(findIndex))->GetNumParam();
}
//__________________________________________________________________________________
const Char_t* AliITSTriggerConditions::GetAlgoParamNameLI(const Char_t* aLabel, UShort_t pIndex) const {
  // returns parameter name for the parameter with index pIndex, corresponding to the algorithm with label aLabel
  UShort_t findIndex=fNumAlgo;
  for (UInt_t i=0; i<fNumAlgo; i++) {
    if (strcmp(((AliITSTriggerAlgorithmConditions*)fAlgoList.At(i))->GetLabel(), aLabel) == 0) {
      findIndex = i;
      break;
    }
  }
  if (findIndex==fNumAlgo) {
    Error("AliITSTriggerConditions::GetAlgoParamNameLI", "label %s not found", aLabel);
    return "";
  }
  return ((AliITSTriggerAlgorithmConditions*)fAlgoList.At(findIndex))->GetParamNameI(pIndex);
}
//__________________________________________________________________________________
Int_t AliITSTriggerConditions::GetAlgoParamValueLI(const Char_t* aLabel, UShort_t pIndex) const {
  // returns parameter value for the parameter with index pIndex, corresponding to the algorithm with label aLabel
  UShort_t findIndex=fNumAlgo;
  for (UInt_t i=0; i<fNumAlgo; i++) {
    if (strcmp(((AliITSTriggerAlgorithmConditions*)fAlgoList.At(i))->GetLabel(), aLabel) == 0) {
      findIndex = i;
      break;
    }
  }
  if (findIndex==fNumAlgo) {
    Error("AliITSTriggerConditions::GetAlgoParamValueLI", "label %s not found", aLabel);
    return -1;
  }
  return ((AliITSTriggerAlgorithmConditions*)fAlgoList.At(findIndex))->GetParamValueI(pIndex);
}
//__________________________________________________________________________________
Int_t AliITSTriggerConditions::GetAlgoParamValueLN(const Char_t* aLabel, const Char_t* pName) const {
  // returns parameter value for the parameter named pName, corresponding to the algorithm with label aLabel
  UShort_t findIndex=fNumAlgo;
  for (UInt_t i=0; i<fNumAlgo; i++) {
    if (strcmp(((AliITSTriggerAlgorithmConditions*)fAlgoList.At(i))->GetLabel(), aLabel) == 0) {
      findIndex = i;
      break;
    }
  }
  if (findIndex==fNumAlgo) {
    Error("AliITSTriggerConditions::GetAlgoParamValueLN", "label %s not found", aLabel);
    return -1;
  }
  return ((AliITSTriggerAlgorithmConditions*)fAlgoList.At(findIndex))->GetParamValueN(pName);
}
//__________________________________________________________________________________
UInt_t AliITSTriggerConditions::GetChipKey(Int_t eq, Int_t hs, Int_t chip) const {
  // translates eq,hs,chip numbers into one integer key (0-1199)
  if (eq<0 || eq>=20 || hs<0 || hs>=6 || chip<0 || chip>=10) {
    Error("AliITSTriggerConditions::GetChipKey", "eq,hs,chip = %d,%d,%d out of range",eq,hs,chip);
    return 0;
  }
  return eq*60 + hs*10 + chip;
}
//__________________________________________________________________________________
void AliITSTriggerConditions::GetChipFromKey(UInt_t key, Int_t& eq, Int_t& hs, Int_t& chip) const {
  // translates a chip key back into eq,hs,chip numbers
  if (key>=1200) {
    Error("AliITSTriggerConditions::GetChipFromKey", "key = %d out of range", key);
    return;
  }
  eq   = key/60;
  hs   = (key%60)/10;
  chip = key%10;
}
//__________________________________________________________________________________
Bool_t AliITSTriggerConditions::GetNextInActiveChip(Int_t& eq, Int_t& hs, Int_t& chip) const {
  // Returns true if an in-active chip was found (start looking after the bit number
  // corresponding to the input parameters eq,hs,chip).
  // If either of eq,hs,chip < 0 , start from beginning of TBits array.
  // See example of usage in AliITSDetTypeRec::RemoveFastOrFiredInActive.
  UInt_t searchIndex;
  if (eq<0 || hs<0 || chip<0) searchIndex = 0;
  else searchIndex = GetChipKey(eq, hs, chip) + 1;
  UInt_t nextIndex = fInActiveChips.FirstSetBit(searchIndex);
  if (nextIndex==1200) return kFALSE;
  GetChipFromKey(nextIndex, eq, hs, chip);
  return kTRUE;
}
//__________________________________________________________________________________
void AliITSTriggerConditions::DumpInActiveChips() const {
  // Prints a list of all inactive chips
  UInt_t startBit=0;
  UInt_t occ=0;
  while (startBit<1200) {
    startBit = fInActiveChips.FirstSetBit(startBit);
    if (startBit<1200) {
      occ++;
      Int_t eq,hs,chip;
      GetChipFromKey(startBit,eq,hs,chip);
      printf("%3d: %d,%d,%d\n",occ,eq,hs,chip);
      startBit++;
    }
  }
}
//__________________________________________________________________________________
void AliITSTriggerConditions::ReadFromTextFile(const Char_t* fileName) {
  // Reads conditions from text file (file format is used online by PIT system)

  ResetAll();

  const Int_t maxS = 500;
  enum headers {HEAD, OUTPUT, PARAM, ACTIVECHIP};

  ifstream file;
  file.open(fileName, ifstream::in);
  if (file.fail()) {
    Error("AliITSTriggerConditions::ReadFromTextFile","No file (%s) present.",fileName);
    return;
  }

  Int_t headType = -1; // no header read from start
  UInt_t nl = 0;
  Char_t cline[maxS];
  while(!file.eof()) {
    // *** get line
    nl++;
    file.getline(cline,maxS);
    TString line(cline);

    // *** remove comments from line
    Int_t skipPos = line.First('#');
    if (skipPos>=0) {
      line.Remove(skipPos,maxS);
    }

    // *** check what type of information the line has (header or not...)
    Int_t brackPos1 = line.First('[');
    Int_t brackPos2 = line.First(']');
    if (brackPos1==0 && brackPos2-1>brackPos1) {
      // *** parse header line (header has to come first on the line)
      TString headword = line(brackPos1+1,brackPos2-1-brackPos1);
      if      (headword.CompareTo("Header",           TString::kIgnoreCase) == 0) headType = HEAD;
      else if (headword.CompareTo("Outputs",          TString::kIgnoreCase) == 0) headType = OUTPUT;
      else if (headword.CompareTo("Output_parameters",TString::kIgnoreCase) == 0) headType = PARAM;
      else if (headword.CompareTo("Active_chips",     TString::kIgnoreCase) == 0) headType = ACTIVECHIP;
    }
    else {
      // *** parse non-header line

      // HEAD data
      if (headType==HEAD) {
	TString descrWord, valueWord;
	if (! SplitStringIn2(line,descrWord,valueWord,'=')) continue;
	descrWord.ReplaceAll(" ","");
	valueWord.Remove(TString::kBoth,' ');

	if (descrWord.CompareTo("RUN_NUMBER",TString::kIgnoreCase) == 0 && valueWord.IsDigit()) {
	  SetRunNumber(valueWord.Atoi());
	}
	else if (descrWord.CompareTo("PROCESSING_FIRMWARE_VERSION",TString::kIgnoreCase) == 0 && valueWord.IsDigit()) {
	  SetFirmWareVersion(valueWord.Atoi());
	}
	else if (descrWord.CompareTo("GLOBAL_DESCRIPTION",TString::kIgnoreCase) == 0) {
	  SetGlobalDescription(valueWord.Data());
	}
	else if (descrWord.CompareTo("VERSION_REGISTER_VALUE",TString::kIgnoreCase) == 0 && valueWord.IsDigit()) {
	  SetVersionRegister(valueWord.Atoi());
	}
	else if (descrWord.CompareTo("INPUT_CONDITIONS_VERSION",TString::kIgnoreCase) == 0 && valueWord.IsDigit()) {
	  SetInputConditionsVersion(valueWord.Atoi());
	}
	else if (descrWord.CompareTo("PARAMETERS_VERSION",TString::kIgnoreCase) == 0 && valueWord.IsDigit()) {
	  SetParametersVersion(valueWord.Atoi());
	}
      }
      // OUTPUT data
      else if (headType==OUTPUT) {
	TString idWord, labelWord, descrWord, restWord;
	if (! SplitStringIn2(line,idWord,restWord,'=')) continue;
	if (! idWord.IsDigit()) continue;
	if (! SplitStringIn2(restWord,labelWord,descrWord,',')) continue;
	labelWord = GetStringBetween(labelWord,'\'','\'');
	descrWord = GetStringBetween(descrWord,'\'','\'');
	if (labelWord.Length()==0 || descrWord.Length()==0) continue;
	//	printf("id: %d , label '%s' , descr '%s'\n", idWord.Atoi(),labelWord.Data(),descrWord.Data());
	AddAlgo(idWord.Atoi(),labelWord.Data(),descrWord.Data());
      }
      // PARAM data
      else if (headType==PARAM) {
	TString idWord, restWord;
	if (! SplitStringIn2(line,idWord,restWord,'=')) continue;
	if (! idWord.IsDigit()) continue;
	while (restWord.Length()>0) {
	  TString parWord, nameWord, valWord;
	  SplitStringIn2(restWord,parWord,restWord,';');
	  if (! SplitStringIn2(parWord,nameWord,valWord,',')) break;
	  nameWord = GetStringBetween(nameWord,'\'','\'');
	  if (nameWord.Length()==0 || valWord.Length()==0 || ! valWord.IsDigit()) break;
	  //	  printf("id %d , param %s , value %d\n",idWord.Atoi(),nameWord.Data(),valWord.Atoi());
	  AddAlgoParam(idWord.Atoi(),nameWord.Data(),valWord.Atoi());
	}
      }
      // ACTIVECHIP data
      if (headType==ACTIVECHIP) {
	TString eqWord, sideWord, hsWord, chipWord, restWord;
	if (! SplitStringIn2(line,eqWord,restWord,',')) continue;
	if (! eqWord.IsDigit()) continue;
	UInt_t eq = eqWord.Atoi();
	if (eq>=20) continue;
	if (! SplitStringIn2(restWord,sideWord,restWord,',')) continue;
	sideWord.ReplaceAll(" ","");
	if (sideWord.CompareTo("A",TString::kIgnoreCase) == 0) {}
	else if (sideWord.CompareTo("C",TString::kIgnoreCase) == 0) eq+=10;
	else continue;
	if (! SplitStringIn2(restWord,hsWord,chipWord,'=')) continue;
	if (! hsWord.IsDigit()) continue;
	UInt_t hs = hsWord.Atoi();
	if (hs>=6) continue;
	chipWord.ReplaceAll(" ","");
	if (chipWord.Length()!=10) continue;
	for (UInt_t chip=0; chip<10; chip++) {
	  if (chipWord[9-chip]=='0') {
	    //	    printf("Chip %d,%d,%d inactive\n",eq,hs,chip);
	    SetInActiveChip(eq,hs,chip);
	  }
	}
      }

    }
  }
  file.close();
}
//__________________________________________________________________________________
Bool_t AliITSTriggerConditions::SplitStringIn2(TString orig, TString& word1, TString& word2, Char_t sep) {
  // splits a string in two parts (one before separator character and one after)
  Int_t sepPos = orig.First(sep);
  if (sepPos<0) sepPos = orig.Length();
  word1 = orig(0,sepPos);
  word2 = orig(sepPos+1,orig.Length());
  return (word1.Length()>0 && word2.Length()>0);
}
//__________________________________________________________________________________
TString AliITSTriggerConditions::GetStringBetween(TString orig, Char_t sep1, Char_t sep2) {
  // returns string between separator character 1 and separator character 2
  Int_t pos1 = orig.First(sep1);
  if (pos1<0) return "";
  TString ret = orig(pos1+1,orig.Length());
  Int_t pos2 = ret.First(sep2);
  if (pos2<0) return "";
  ret = ret(0,pos2);
  return ret;
}
//__________________________________________________________________________________
Bool_t AliITSTriggerConditions::IsEqualTo(AliITSTriggerConditions *cond) const {
  // checks if this object contains the same information as the input cond object
  if (fRunNumber != cond->GetRunNumber()) return kFALSE;
  if (fFirmWareVersion != cond->GetFirmWareVersion()) return kFALSE;
  if (fGlobalDescription.CompareTo(cond->GetGlobalDescription()) !=0) return kFALSE;
  if (fVersionRegister != cond->GetVersionRegister()) return kFALSE;
  if (fInputConditionsVersion != cond->GetInputConditionsVersion()) return kFALSE;
  if (fParametersVersion != cond->GetParametersVersion()) return kFALSE;

  for (UInt_t eq=0; eq<20; eq++) {
    for (UInt_t hs=0; hs<6; hs++) {
      for (UInt_t chip=0; chip<10; chip++) {
	if (IsChipActive(eq,hs,chip) != cond->IsChipActive(eq,hs,chip)) return kFALSE;
      }
    }
  }

  if (fNumAlgo != cond->GetNumAlgo()) return kFALSE;
  for (Short_t alg1=0; alg1<fNumAlgo; alg1++) {
    Short_t alg2 = cond->GetAlgoIndexL(GetAlgoLabelI(alg1));
    if (alg2<0) return kFALSE;
    if (GetAlgoIDI(alg1) != cond->GetAlgoIDI(alg2)) return kFALSE;
    if (strcmp(GetAlgoDescriptionI(alg1), cond->GetAlgoDescriptionI(alg2)) != 0) return kFALSE;
    if (GetNumAlgoParamI(alg1) != cond->GetNumAlgoParamI(alg2)) return kFALSE;
    for (Short_t par1=0; par1<GetNumAlgoParamI(alg1); par1++) {      
      const Char_t* paramName = GetAlgoParamNameII(alg1,par1);
      if (GetAlgoParamValueIN(alg1,paramName) != cond->GetAlgoParamValueIN(alg2,paramName)) return kFALSE;
    }
  }

  return kTRUE;
}
//__________________________________________________________________________________
void AliITSTriggerConditions::PrintAsInPIT() const {

  // Prints conditions data

  printf("[Header]\n");
  printf("RUN_NUMBER = %d\n",fRunNumber);
  printf("PROCESSING_FIRMWARE_VERSION = %d\n",fFirmWareVersion);
  printf("GLOBAL_DESCRIPTION = %s\n",fGlobalDescription.Data());
  printf("VERSION_REGISTER_VALUE = %d\n",fVersionRegister);
  printf("INPUT_CONDITIONS_VERSION = %d\n",fInputConditionsVersion);
  printf("PARAMETERS_VERSION = %d\n",fParametersVersion);
  printf("\n");

  printf("[Outputs]\n");
  for (UInt_t i=0; i<fNumAlgo; i++) {
    printf("%d = '%s', '%s'\n", GetAlgoIDI(i), GetAlgoLabelI(i), GetAlgoDescriptionI(i));
  }
  printf("\n");

  printf("[Output_parameters]\n");
  for (UInt_t i=0; i<fNumAlgo; i++) {
    printf("%d =", GetAlgoIDI(i));
    for (Short_t p=0; p<GetNumAlgoParamI(i); p++) {
      printf(" '%s', %d;", GetAlgoParamNameII(i,p), GetAlgoParamValueII(i,p));
    }
    printf("\n");
  }
  printf("\n");

  printf("[Active_chips]\n");
  for (UInt_t eq=0; eq<20; eq++) {
    for (UInt_t hs=0; hs<6; hs++) {
      UInt_t nActiveOnHs = 0;
      TString inactiveStr = "";
      for (UInt_t chip=0; chip<10; chip++) {
        Bool_t isChipActive = IsChipActive(eq,hs,9-chip);
        inactiveStr.Append(Form("%d",isChipActive));
        nActiveOnHs+=isChipActive;
      }
      if (nActiveOnHs<10) {
        printf("%d,%c,%d=%s\n", eq%10, eq<10 ? 'A' : 'C', hs, inactiveStr.Data());
      }
    }
  }
}
 AliITSTriggerConditions.cxx:1
 AliITSTriggerConditions.cxx:2
 AliITSTriggerConditions.cxx:3
 AliITSTriggerConditions.cxx:4
 AliITSTriggerConditions.cxx:5
 AliITSTriggerConditions.cxx:6
 AliITSTriggerConditions.cxx:7
 AliITSTriggerConditions.cxx:8
 AliITSTriggerConditions.cxx:9
 AliITSTriggerConditions.cxx:10
 AliITSTriggerConditions.cxx:11
 AliITSTriggerConditions.cxx:12
 AliITSTriggerConditions.cxx:13
 AliITSTriggerConditions.cxx:14
 AliITSTriggerConditions.cxx:15
 AliITSTriggerConditions.cxx:16
 AliITSTriggerConditions.cxx:17
 AliITSTriggerConditions.cxx:18
 AliITSTriggerConditions.cxx:19
 AliITSTriggerConditions.cxx:20
 AliITSTriggerConditions.cxx:21
 AliITSTriggerConditions.cxx:22
 AliITSTriggerConditions.cxx:23
 AliITSTriggerConditions.cxx:24
 AliITSTriggerConditions.cxx:25
 AliITSTriggerConditions.cxx:26
 AliITSTriggerConditions.cxx:27
 AliITSTriggerConditions.cxx:28
 AliITSTriggerConditions.cxx:29
 AliITSTriggerConditions.cxx:30
 AliITSTriggerConditions.cxx:31
 AliITSTriggerConditions.cxx:32
 AliITSTriggerConditions.cxx:33
 AliITSTriggerConditions.cxx:34
 AliITSTriggerConditions.cxx:35
 AliITSTriggerConditions.cxx:36
 AliITSTriggerConditions.cxx:37
 AliITSTriggerConditions.cxx:38
 AliITSTriggerConditions.cxx:39
 AliITSTriggerConditions.cxx:40
 AliITSTriggerConditions.cxx:41
 AliITSTriggerConditions.cxx:42
 AliITSTriggerConditions.cxx:43
 AliITSTriggerConditions.cxx:44
 AliITSTriggerConditions.cxx:45
 AliITSTriggerConditions.cxx:46
 AliITSTriggerConditions.cxx:47
 AliITSTriggerConditions.cxx:48
 AliITSTriggerConditions.cxx:49
 AliITSTriggerConditions.cxx:50
 AliITSTriggerConditions.cxx:51
 AliITSTriggerConditions.cxx:52
 AliITSTriggerConditions.cxx:53
 AliITSTriggerConditions.cxx:54
 AliITSTriggerConditions.cxx:55
 AliITSTriggerConditions.cxx:56
 AliITSTriggerConditions.cxx:57
 AliITSTriggerConditions.cxx:58
 AliITSTriggerConditions.cxx:59
 AliITSTriggerConditions.cxx:60
 AliITSTriggerConditions.cxx:61
 AliITSTriggerConditions.cxx:62
 AliITSTriggerConditions.cxx:63
 AliITSTriggerConditions.cxx:64
 AliITSTriggerConditions.cxx:65
 AliITSTriggerConditions.cxx:66
 AliITSTriggerConditions.cxx:67
 AliITSTriggerConditions.cxx:68
 AliITSTriggerConditions.cxx:69
 AliITSTriggerConditions.cxx:70
 AliITSTriggerConditions.cxx:71
 AliITSTriggerConditions.cxx:72
 AliITSTriggerConditions.cxx:73
 AliITSTriggerConditions.cxx:74
 AliITSTriggerConditions.cxx:75
 AliITSTriggerConditions.cxx:76
 AliITSTriggerConditions.cxx:77
 AliITSTriggerConditions.cxx:78
 AliITSTriggerConditions.cxx:79
 AliITSTriggerConditions.cxx:80
 AliITSTriggerConditions.cxx:81
 AliITSTriggerConditions.cxx:82
 AliITSTriggerConditions.cxx:83
 AliITSTriggerConditions.cxx:84
 AliITSTriggerConditions.cxx:85
 AliITSTriggerConditions.cxx:86
 AliITSTriggerConditions.cxx:87
 AliITSTriggerConditions.cxx:88
 AliITSTriggerConditions.cxx:89
 AliITSTriggerConditions.cxx:90
 AliITSTriggerConditions.cxx:91
 AliITSTriggerConditions.cxx:92
 AliITSTriggerConditions.cxx:93
 AliITSTriggerConditions.cxx:94
 AliITSTriggerConditions.cxx:95
 AliITSTriggerConditions.cxx:96
 AliITSTriggerConditions.cxx:97
 AliITSTriggerConditions.cxx:98
 AliITSTriggerConditions.cxx:99
 AliITSTriggerConditions.cxx:100
 AliITSTriggerConditions.cxx:101
 AliITSTriggerConditions.cxx:102
 AliITSTriggerConditions.cxx:103
 AliITSTriggerConditions.cxx:104
 AliITSTriggerConditions.cxx:105
 AliITSTriggerConditions.cxx:106
 AliITSTriggerConditions.cxx:107
 AliITSTriggerConditions.cxx:108
 AliITSTriggerConditions.cxx:109
 AliITSTriggerConditions.cxx:110
 AliITSTriggerConditions.cxx:111
 AliITSTriggerConditions.cxx:112
 AliITSTriggerConditions.cxx:113
 AliITSTriggerConditions.cxx:114
 AliITSTriggerConditions.cxx:115
 AliITSTriggerConditions.cxx:116
 AliITSTriggerConditions.cxx:117
 AliITSTriggerConditions.cxx:118
 AliITSTriggerConditions.cxx:119
 AliITSTriggerConditions.cxx:120
 AliITSTriggerConditions.cxx:121
 AliITSTriggerConditions.cxx:122
 AliITSTriggerConditions.cxx:123
 AliITSTriggerConditions.cxx:124
 AliITSTriggerConditions.cxx:125
 AliITSTriggerConditions.cxx:126
 AliITSTriggerConditions.cxx:127
 AliITSTriggerConditions.cxx:128
 AliITSTriggerConditions.cxx:129
 AliITSTriggerConditions.cxx:130
 AliITSTriggerConditions.cxx:131
 AliITSTriggerConditions.cxx:132
 AliITSTriggerConditions.cxx:133
 AliITSTriggerConditions.cxx:134
 AliITSTriggerConditions.cxx:135
 AliITSTriggerConditions.cxx:136
 AliITSTriggerConditions.cxx:137
 AliITSTriggerConditions.cxx:138
 AliITSTriggerConditions.cxx:139
 AliITSTriggerConditions.cxx:140
 AliITSTriggerConditions.cxx:141
 AliITSTriggerConditions.cxx:142
 AliITSTriggerConditions.cxx:143
 AliITSTriggerConditions.cxx:144
 AliITSTriggerConditions.cxx:145
 AliITSTriggerConditions.cxx:146
 AliITSTriggerConditions.cxx:147
 AliITSTriggerConditions.cxx:148
 AliITSTriggerConditions.cxx:149
 AliITSTriggerConditions.cxx:150
 AliITSTriggerConditions.cxx:151
 AliITSTriggerConditions.cxx:152
 AliITSTriggerConditions.cxx:153
 AliITSTriggerConditions.cxx:154
 AliITSTriggerConditions.cxx:155
 AliITSTriggerConditions.cxx:156
 AliITSTriggerConditions.cxx:157
 AliITSTriggerConditions.cxx:158
 AliITSTriggerConditions.cxx:159
 AliITSTriggerConditions.cxx:160
 AliITSTriggerConditions.cxx:161
 AliITSTriggerConditions.cxx:162
 AliITSTriggerConditions.cxx:163
 AliITSTriggerConditions.cxx:164
 AliITSTriggerConditions.cxx:165
 AliITSTriggerConditions.cxx:166
 AliITSTriggerConditions.cxx:167
 AliITSTriggerConditions.cxx:168
 AliITSTriggerConditions.cxx:169
 AliITSTriggerConditions.cxx:170
 AliITSTriggerConditions.cxx:171
 AliITSTriggerConditions.cxx:172
 AliITSTriggerConditions.cxx:173
 AliITSTriggerConditions.cxx:174
 AliITSTriggerConditions.cxx:175
 AliITSTriggerConditions.cxx:176
 AliITSTriggerConditions.cxx:177
 AliITSTriggerConditions.cxx:178
 AliITSTriggerConditions.cxx:179
 AliITSTriggerConditions.cxx:180
 AliITSTriggerConditions.cxx:181
 AliITSTriggerConditions.cxx:182
 AliITSTriggerConditions.cxx:183
 AliITSTriggerConditions.cxx:184
 AliITSTriggerConditions.cxx:185
 AliITSTriggerConditions.cxx:186
 AliITSTriggerConditions.cxx:187
 AliITSTriggerConditions.cxx:188
 AliITSTriggerConditions.cxx:189
 AliITSTriggerConditions.cxx:190
 AliITSTriggerConditions.cxx:191
 AliITSTriggerConditions.cxx:192
 AliITSTriggerConditions.cxx:193
 AliITSTriggerConditions.cxx:194
 AliITSTriggerConditions.cxx:195
 AliITSTriggerConditions.cxx:196
 AliITSTriggerConditions.cxx:197
 AliITSTriggerConditions.cxx:198
 AliITSTriggerConditions.cxx:199
 AliITSTriggerConditions.cxx:200
 AliITSTriggerConditions.cxx:201
 AliITSTriggerConditions.cxx:202
 AliITSTriggerConditions.cxx:203
 AliITSTriggerConditions.cxx:204
 AliITSTriggerConditions.cxx:205
 AliITSTriggerConditions.cxx:206
 AliITSTriggerConditions.cxx:207
 AliITSTriggerConditions.cxx:208
 AliITSTriggerConditions.cxx:209
 AliITSTriggerConditions.cxx:210
 AliITSTriggerConditions.cxx:211
 AliITSTriggerConditions.cxx:212
 AliITSTriggerConditions.cxx:213
 AliITSTriggerConditions.cxx:214
 AliITSTriggerConditions.cxx:215
 AliITSTriggerConditions.cxx:216
 AliITSTriggerConditions.cxx:217
 AliITSTriggerConditions.cxx:218
 AliITSTriggerConditions.cxx:219
 AliITSTriggerConditions.cxx:220
 AliITSTriggerConditions.cxx:221
 AliITSTriggerConditions.cxx:222
 AliITSTriggerConditions.cxx:223
 AliITSTriggerConditions.cxx:224
 AliITSTriggerConditions.cxx:225
 AliITSTriggerConditions.cxx:226
 AliITSTriggerConditions.cxx:227
 AliITSTriggerConditions.cxx:228
 AliITSTriggerConditions.cxx:229
 AliITSTriggerConditions.cxx:230
 AliITSTriggerConditions.cxx:231
 AliITSTriggerConditions.cxx:232
 AliITSTriggerConditions.cxx:233
 AliITSTriggerConditions.cxx:234
 AliITSTriggerConditions.cxx:235
 AliITSTriggerConditions.cxx:236
 AliITSTriggerConditions.cxx:237
 AliITSTriggerConditions.cxx:238
 AliITSTriggerConditions.cxx:239
 AliITSTriggerConditions.cxx:240
 AliITSTriggerConditions.cxx:241
 AliITSTriggerConditions.cxx:242
 AliITSTriggerConditions.cxx:243
 AliITSTriggerConditions.cxx:244
 AliITSTriggerConditions.cxx:245
 AliITSTriggerConditions.cxx:246
 AliITSTriggerConditions.cxx:247
 AliITSTriggerConditions.cxx:248
 AliITSTriggerConditions.cxx:249
 AliITSTriggerConditions.cxx:250
 AliITSTriggerConditions.cxx:251
 AliITSTriggerConditions.cxx:252
 AliITSTriggerConditions.cxx:253
 AliITSTriggerConditions.cxx:254
 AliITSTriggerConditions.cxx:255
 AliITSTriggerConditions.cxx:256
 AliITSTriggerConditions.cxx:257
 AliITSTriggerConditions.cxx:258
 AliITSTriggerConditions.cxx:259
 AliITSTriggerConditions.cxx:260
 AliITSTriggerConditions.cxx:261
 AliITSTriggerConditions.cxx:262
 AliITSTriggerConditions.cxx:263
 AliITSTriggerConditions.cxx:264
 AliITSTriggerConditions.cxx:265
 AliITSTriggerConditions.cxx:266
 AliITSTriggerConditions.cxx:267
 AliITSTriggerConditions.cxx:268
 AliITSTriggerConditions.cxx:269
 AliITSTriggerConditions.cxx:270
 AliITSTriggerConditions.cxx:271
 AliITSTriggerConditions.cxx:272
 AliITSTriggerConditions.cxx:273
 AliITSTriggerConditions.cxx:274
 AliITSTriggerConditions.cxx:275
 AliITSTriggerConditions.cxx:276
 AliITSTriggerConditions.cxx:277
 AliITSTriggerConditions.cxx:278
 AliITSTriggerConditions.cxx:279
 AliITSTriggerConditions.cxx:280
 AliITSTriggerConditions.cxx:281
 AliITSTriggerConditions.cxx:282
 AliITSTriggerConditions.cxx:283
 AliITSTriggerConditions.cxx:284
 AliITSTriggerConditions.cxx:285
 AliITSTriggerConditions.cxx:286
 AliITSTriggerConditions.cxx:287
 AliITSTriggerConditions.cxx:288
 AliITSTriggerConditions.cxx:289
 AliITSTriggerConditions.cxx:290
 AliITSTriggerConditions.cxx:291
 AliITSTriggerConditions.cxx:292
 AliITSTriggerConditions.cxx:293
 AliITSTriggerConditions.cxx:294
 AliITSTriggerConditions.cxx:295
 AliITSTriggerConditions.cxx:296
 AliITSTriggerConditions.cxx:297
 AliITSTriggerConditions.cxx:298
 AliITSTriggerConditions.cxx:299
 AliITSTriggerConditions.cxx:300
 AliITSTriggerConditions.cxx:301
 AliITSTriggerConditions.cxx:302
 AliITSTriggerConditions.cxx:303
 AliITSTriggerConditions.cxx:304
 AliITSTriggerConditions.cxx:305
 AliITSTriggerConditions.cxx:306
 AliITSTriggerConditions.cxx:307
 AliITSTriggerConditions.cxx:308
 AliITSTriggerConditions.cxx:309
 AliITSTriggerConditions.cxx:310
 AliITSTriggerConditions.cxx:311
 AliITSTriggerConditions.cxx:312
 AliITSTriggerConditions.cxx:313
 AliITSTriggerConditions.cxx:314
 AliITSTriggerConditions.cxx:315
 AliITSTriggerConditions.cxx:316
 AliITSTriggerConditions.cxx:317
 AliITSTriggerConditions.cxx:318
 AliITSTriggerConditions.cxx:319
 AliITSTriggerConditions.cxx:320
 AliITSTriggerConditions.cxx:321
 AliITSTriggerConditions.cxx:322
 AliITSTriggerConditions.cxx:323
 AliITSTriggerConditions.cxx:324
 AliITSTriggerConditions.cxx:325
 AliITSTriggerConditions.cxx:326
 AliITSTriggerConditions.cxx:327
 AliITSTriggerConditions.cxx:328
 AliITSTriggerConditions.cxx:329
 AliITSTriggerConditions.cxx:330
 AliITSTriggerConditions.cxx:331
 AliITSTriggerConditions.cxx:332
 AliITSTriggerConditions.cxx:333
 AliITSTriggerConditions.cxx:334
 AliITSTriggerConditions.cxx:335
 AliITSTriggerConditions.cxx:336
 AliITSTriggerConditions.cxx:337
 AliITSTriggerConditions.cxx:338
 AliITSTriggerConditions.cxx:339
 AliITSTriggerConditions.cxx:340
 AliITSTriggerConditions.cxx:341
 AliITSTriggerConditions.cxx:342
 AliITSTriggerConditions.cxx:343
 AliITSTriggerConditions.cxx:344
 AliITSTriggerConditions.cxx:345
 AliITSTriggerConditions.cxx:346
 AliITSTriggerConditions.cxx:347
 AliITSTriggerConditions.cxx:348
 AliITSTriggerConditions.cxx:349
 AliITSTriggerConditions.cxx:350
 AliITSTriggerConditions.cxx:351
 AliITSTriggerConditions.cxx:352
 AliITSTriggerConditions.cxx:353
 AliITSTriggerConditions.cxx:354
 AliITSTriggerConditions.cxx:355
 AliITSTriggerConditions.cxx:356
 AliITSTriggerConditions.cxx:357
 AliITSTriggerConditions.cxx:358
 AliITSTriggerConditions.cxx:359
 AliITSTriggerConditions.cxx:360
 AliITSTriggerConditions.cxx:361
 AliITSTriggerConditions.cxx:362
 AliITSTriggerConditions.cxx:363
 AliITSTriggerConditions.cxx:364
 AliITSTriggerConditions.cxx:365
 AliITSTriggerConditions.cxx:366
 AliITSTriggerConditions.cxx:367
 AliITSTriggerConditions.cxx:368
 AliITSTriggerConditions.cxx:369
 AliITSTriggerConditions.cxx:370
 AliITSTriggerConditions.cxx:371
 AliITSTriggerConditions.cxx:372
 AliITSTriggerConditions.cxx:373
 AliITSTriggerConditions.cxx:374
 AliITSTriggerConditions.cxx:375
 AliITSTriggerConditions.cxx:376
 AliITSTriggerConditions.cxx:377
 AliITSTriggerConditions.cxx:378
 AliITSTriggerConditions.cxx:379
 AliITSTriggerConditions.cxx:380
 AliITSTriggerConditions.cxx:381
 AliITSTriggerConditions.cxx:382
 AliITSTriggerConditions.cxx:383
 AliITSTriggerConditions.cxx:384
 AliITSTriggerConditions.cxx:385
 AliITSTriggerConditions.cxx:386
 AliITSTriggerConditions.cxx:387
 AliITSTriggerConditions.cxx:388
 AliITSTriggerConditions.cxx:389
 AliITSTriggerConditions.cxx:390
 AliITSTriggerConditions.cxx:391
 AliITSTriggerConditions.cxx:392
 AliITSTriggerConditions.cxx:393
 AliITSTriggerConditions.cxx:394
 AliITSTriggerConditions.cxx:395
 AliITSTriggerConditions.cxx:396
 AliITSTriggerConditions.cxx:397
 AliITSTriggerConditions.cxx:398
 AliITSTriggerConditions.cxx:399
 AliITSTriggerConditions.cxx:400
 AliITSTriggerConditions.cxx:401
 AliITSTriggerConditions.cxx:402
 AliITSTriggerConditions.cxx:403
 AliITSTriggerConditions.cxx:404
 AliITSTriggerConditions.cxx:405
 AliITSTriggerConditions.cxx:406
 AliITSTriggerConditions.cxx:407
 AliITSTriggerConditions.cxx:408
 AliITSTriggerConditions.cxx:409
 AliITSTriggerConditions.cxx:410
 AliITSTriggerConditions.cxx:411
 AliITSTriggerConditions.cxx:412
 AliITSTriggerConditions.cxx:413
 AliITSTriggerConditions.cxx:414
 AliITSTriggerConditions.cxx:415
 AliITSTriggerConditions.cxx:416
 AliITSTriggerConditions.cxx:417
 AliITSTriggerConditions.cxx:418
 AliITSTriggerConditions.cxx:419
 AliITSTriggerConditions.cxx:420
 AliITSTriggerConditions.cxx:421
 AliITSTriggerConditions.cxx:422
 AliITSTriggerConditions.cxx:423
 AliITSTriggerConditions.cxx:424
 AliITSTriggerConditions.cxx:425
 AliITSTriggerConditions.cxx:426
 AliITSTriggerConditions.cxx:427
 AliITSTriggerConditions.cxx:428
 AliITSTriggerConditions.cxx:429
 AliITSTriggerConditions.cxx:430
 AliITSTriggerConditions.cxx:431
 AliITSTriggerConditions.cxx:432
 AliITSTriggerConditions.cxx:433
 AliITSTriggerConditions.cxx:434
 AliITSTriggerConditions.cxx:435
 AliITSTriggerConditions.cxx:436
 AliITSTriggerConditions.cxx:437
 AliITSTriggerConditions.cxx:438
 AliITSTriggerConditions.cxx:439
 AliITSTriggerConditions.cxx:440
 AliITSTriggerConditions.cxx:441
 AliITSTriggerConditions.cxx:442
 AliITSTriggerConditions.cxx:443
 AliITSTriggerConditions.cxx:444
 AliITSTriggerConditions.cxx:445
 AliITSTriggerConditions.cxx:446
 AliITSTriggerConditions.cxx:447
 AliITSTriggerConditions.cxx:448
 AliITSTriggerConditions.cxx:449
 AliITSTriggerConditions.cxx:450
 AliITSTriggerConditions.cxx:451
 AliITSTriggerConditions.cxx:452
 AliITSTriggerConditions.cxx:453
 AliITSTriggerConditions.cxx:454
 AliITSTriggerConditions.cxx:455
 AliITSTriggerConditions.cxx:456
 AliITSTriggerConditions.cxx:457
 AliITSTriggerConditions.cxx:458
 AliITSTriggerConditions.cxx:459
 AliITSTriggerConditions.cxx:460
 AliITSTriggerConditions.cxx:461
 AliITSTriggerConditions.cxx:462
 AliITSTriggerConditions.cxx:463
 AliITSTriggerConditions.cxx:464
 AliITSTriggerConditions.cxx:465
 AliITSTriggerConditions.cxx:466
 AliITSTriggerConditions.cxx:467
 AliITSTriggerConditions.cxx:468
 AliITSTriggerConditions.cxx:469
 AliITSTriggerConditions.cxx:470
 AliITSTriggerConditions.cxx:471
 AliITSTriggerConditions.cxx:472
 AliITSTriggerConditions.cxx:473
 AliITSTriggerConditions.cxx:474
 AliITSTriggerConditions.cxx:475
 AliITSTriggerConditions.cxx:476
 AliITSTriggerConditions.cxx:477
 AliITSTriggerConditions.cxx:478
 AliITSTriggerConditions.cxx:479
 AliITSTriggerConditions.cxx:480
 AliITSTriggerConditions.cxx:481
 AliITSTriggerConditions.cxx:482
 AliITSTriggerConditions.cxx:483
 AliITSTriggerConditions.cxx:484
 AliITSTriggerConditions.cxx:485
 AliITSTriggerConditions.cxx:486
 AliITSTriggerConditions.cxx:487
 AliITSTriggerConditions.cxx:488
 AliITSTriggerConditions.cxx:489
 AliITSTriggerConditions.cxx:490
 AliITSTriggerConditions.cxx:491
 AliITSTriggerConditions.cxx:492
 AliITSTriggerConditions.cxx:493
 AliITSTriggerConditions.cxx:494
 AliITSTriggerConditions.cxx:495
 AliITSTriggerConditions.cxx:496
 AliITSTriggerConditions.cxx:497
 AliITSTriggerConditions.cxx:498
 AliITSTriggerConditions.cxx:499
 AliITSTriggerConditions.cxx:500
 AliITSTriggerConditions.cxx:501
 AliITSTriggerConditions.cxx:502
 AliITSTriggerConditions.cxx:503
 AliITSTriggerConditions.cxx:504
 AliITSTriggerConditions.cxx:505
 AliITSTriggerConditions.cxx:506
 AliITSTriggerConditions.cxx:507
 AliITSTriggerConditions.cxx:508
 AliITSTriggerConditions.cxx:509
 AliITSTriggerConditions.cxx:510
 AliITSTriggerConditions.cxx:511
 AliITSTriggerConditions.cxx:512
 AliITSTriggerConditions.cxx:513
 AliITSTriggerConditions.cxx:514
 AliITSTriggerConditions.cxx:515
 AliITSTriggerConditions.cxx:516
 AliITSTriggerConditions.cxx:517
 AliITSTriggerConditions.cxx:518
 AliITSTriggerConditions.cxx:519
 AliITSTriggerConditions.cxx:520
 AliITSTriggerConditions.cxx:521
 AliITSTriggerConditions.cxx:522
 AliITSTriggerConditions.cxx:523
 AliITSTriggerConditions.cxx:524
 AliITSTriggerConditions.cxx:525
 AliITSTriggerConditions.cxx:526
 AliITSTriggerConditions.cxx:527
 AliITSTriggerConditions.cxx:528
 AliITSTriggerConditions.cxx:529
 AliITSTriggerConditions.cxx:530
 AliITSTriggerConditions.cxx:531
 AliITSTriggerConditions.cxx:532
 AliITSTriggerConditions.cxx:533
 AliITSTriggerConditions.cxx:534
 AliITSTriggerConditions.cxx:535
 AliITSTriggerConditions.cxx:536
 AliITSTriggerConditions.cxx:537
 AliITSTriggerConditions.cxx:538
 AliITSTriggerConditions.cxx:539
 AliITSTriggerConditions.cxx:540
 AliITSTriggerConditions.cxx:541
 AliITSTriggerConditions.cxx:542
 AliITSTriggerConditions.cxx:543
 AliITSTriggerConditions.cxx:544
 AliITSTriggerConditions.cxx:545
 AliITSTriggerConditions.cxx:546
 AliITSTriggerConditions.cxx:547
 AliITSTriggerConditions.cxx:548
 AliITSTriggerConditions.cxx:549
 AliITSTriggerConditions.cxx:550
 AliITSTriggerConditions.cxx:551
 AliITSTriggerConditions.cxx:552
 AliITSTriggerConditions.cxx:553
 AliITSTriggerConditions.cxx:554
 AliITSTriggerConditions.cxx:555
 AliITSTriggerConditions.cxx:556
 AliITSTriggerConditions.cxx:557
 AliITSTriggerConditions.cxx:558
 AliITSTriggerConditions.cxx:559
 AliITSTriggerConditions.cxx:560
 AliITSTriggerConditions.cxx:561
 AliITSTriggerConditions.cxx:562
 AliITSTriggerConditions.cxx:563
 AliITSTriggerConditions.cxx:564
 AliITSTriggerConditions.cxx:565
 AliITSTriggerConditions.cxx:566
 AliITSTriggerConditions.cxx:567
 AliITSTriggerConditions.cxx:568
 AliITSTriggerConditions.cxx:569
 AliITSTriggerConditions.cxx:570
 AliITSTriggerConditions.cxx:571
 AliITSTriggerConditions.cxx:572
 AliITSTriggerConditions.cxx:573
 AliITSTriggerConditions.cxx:574
 AliITSTriggerConditions.cxx:575
 AliITSTriggerConditions.cxx:576
 AliITSTriggerConditions.cxx:577
 AliITSTriggerConditions.cxx:578
 AliITSTriggerConditions.cxx:579
 AliITSTriggerConditions.cxx:580
 AliITSTriggerConditions.cxx:581
 AliITSTriggerConditions.cxx:582
 AliITSTriggerConditions.cxx:583
 AliITSTriggerConditions.cxx:584
 AliITSTriggerConditions.cxx:585
 AliITSTriggerConditions.cxx:586
 AliITSTriggerConditions.cxx:587
 AliITSTriggerConditions.cxx:588
 AliITSTriggerConditions.cxx:589
 AliITSTriggerConditions.cxx:590
 AliITSTriggerConditions.cxx:591
 AliITSTriggerConditions.cxx:592
 AliITSTriggerConditions.cxx:593
 AliITSTriggerConditions.cxx:594
 AliITSTriggerConditions.cxx:595
 AliITSTriggerConditions.cxx:596
 AliITSTriggerConditions.cxx:597
 AliITSTriggerConditions.cxx:598
 AliITSTriggerConditions.cxx:599
 AliITSTriggerConditions.cxx:600
 AliITSTriggerConditions.cxx:601
 AliITSTriggerConditions.cxx:602
 AliITSTriggerConditions.cxx:603
 AliITSTriggerConditions.cxx:604
 AliITSTriggerConditions.cxx:605
 AliITSTriggerConditions.cxx:606
 AliITSTriggerConditions.cxx:607
 AliITSTriggerConditions.cxx:608
 AliITSTriggerConditions.cxx:609
 AliITSTriggerConditions.cxx:610
 AliITSTriggerConditions.cxx:611
 AliITSTriggerConditions.cxx:612
 AliITSTriggerConditions.cxx:613
 AliITSTriggerConditions.cxx:614
 AliITSTriggerConditions.cxx:615
 AliITSTriggerConditions.cxx:616
 AliITSTriggerConditions.cxx:617
 AliITSTriggerConditions.cxx:618
 AliITSTriggerConditions.cxx:619
 AliITSTriggerConditions.cxx:620
 AliITSTriggerConditions.cxx:621
 AliITSTriggerConditions.cxx:622
 AliITSTriggerConditions.cxx:623