]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliDetectorTag.cxx
change TH1 status bit for expert, QA and image that were overlapping with other TH1...
[u/mrichter/AliRoot.git] / STEER / AliDetectorTag.cxx
index f080c4dd0dca55ade43563f81bf0a3cde32fd2f8..72a524bf01df5112f79b7d0e266667153401f44a 100644 (file)
 //   Origin: Panos Christakoglou, UOA-CERN, Panos.Christakoglou@cern.ch
 //-----------------------------------------------------------------
 
+#include "TMath.h"
+
 #include "AliDetectorTag.h"
 #include "AliLog.h"
+#include "TObjString.h"
 
 ClassImp(AliDetectorTag)
 
 //___________________________________________________________________________
 AliDetectorTag::AliDetectorTag() :
   TObject(),
-  fDetectorString(0),
+  fDetectorArray(new TObjArray()),
   fMask(0),
   fITSSPD(kFALSE),
   fITSSDD(kFALSE),
@@ -48,13 +51,13 @@ AliDetectorTag::AliDetectorTag() :
   fEMCAL(kFALSE)
 {
   // Default constructor
-  for(Int_t k = 0; k < 20; k++) fDetectors[k] = 0;
+  for(Int_t k = 0; k < 32; k++) fDetectors[k] = 0;
 }
 
 //___________________________________________________________________________
 AliDetectorTag::AliDetectorTag(const AliDetectorTag & detTag) :
   TObject(detTag),
-  fDetectorString(detTag.fDetectorString),
+  fDetectorArray(detTag.fDetectorArray),
   fMask(detTag.fMask),
   fITSSPD(detTag.fITSSPD),
   fITSSDD(detTag.fITSSDD),
@@ -73,7 +76,7 @@ AliDetectorTag::AliDetectorTag(const AliDetectorTag & detTag) :
   fEMCAL(detTag.fEMCAL)
  {
   // DetectorTag copy constructor
-  for(Int_t k = 0; k < 20; k++) fDetectors[k] = detTag.fDetectors[k];
+  for(Int_t k = 0; k < 32; k++) fDetectors[k] = detTag.fDetectors[k];
 }
 
 //___________________________________________________________________________
@@ -82,7 +85,7 @@ AliDetectorTag & AliDetectorTag::operator=(const AliDetectorTag &detTag) {
   if (this != &detTag) {
     TObject::operator=(detTag);
     
-    fDetectorString = detTag.fDetectorString;
+    fDetectorArray = detTag.fDetectorArray;
     fMask = detTag.fMask;   
     fITSSPD = detTag.fITSSPD;
     fITSSDD = detTag.fITSSDD;
@@ -99,7 +102,7 @@ AliDetectorTag & AliDetectorTag::operator=(const AliDetectorTag &detTag) {
     fVZERO = detTag.fVZERO;
     fZDC = detTag.fZDC;
     fEMCAL = detTag.fEMCAL;
-    for(Int_t k = 0; k < 20; k++) fDetectors[k] = detTag.fDetectors[k];
+    for(Int_t k = 0; k < 32; k++) fDetectors[k] = detTag.fDetectors[k];
   }
   return *this;
 }
@@ -107,6 +110,7 @@ AliDetectorTag & AliDetectorTag::operator=(const AliDetectorTag &detTag) {
 //___________________________________________________________________________
 AliDetectorTag::~AliDetectorTag() {
   // Destructor
+  delete fDetectorArray;
 }
 
 //___________________________________________________________________________
@@ -114,7 +118,7 @@ void AliDetectorTag::Int2Bin() {
   // Convert the integer into binary
   Int_t j=0; 
   UInt_t mask = fMask;
-  for(Int_t k = 0; k < 20; k++) fDetectors[k] = 0;
+  for(Int_t k = 0; k < 32; k++) fDetectors[k] = 0;
   while(mask > 0) {
    fDetectors[j] = mask%2;
    mask = mask/2;
@@ -123,24 +127,49 @@ void AliDetectorTag::Int2Bin() {
   SetDetectorConfiguration();
 }
 
+//___________________________________________________________________________
+UInt_t AliDetectorTag::GetIntDetectorMask() {
+  // Returns the detector mask UInt_t
+  UInt_t mask = 0;
+  for(Int_t k = 0; k < 32; k++) 
+    if(fDetectors[k] == 1) mask += (UInt_t)TMath::Power(2,k);
+  
+  return mask;
+}
+
 //___________________________________________________________________________
 void AliDetectorTag::SetDetectorConfiguration() {
   //sets the detector configuration
-  if(fDetectors[0] == 1) {SetITSSPD(); fDetectorString += "SPD ";}
-  if(fDetectors[1] == 1) {SetITSSDD(); fDetectorString += "SDD ";}
-  if(fDetectors[2] == 1) {SetITSSSD(); fDetectorString += "SSD ";}
-  if(fDetectors[3] == 1) {SetTPC(); fDetectorString += "TPC ";}
-  if(fDetectors[4] == 1) {SetTRD(); fDetectorString += "TRD ";}
-  if(fDetectors[5] == 1) {SetTOF(); fDetectorString += "TOF ";}
-  if(fDetectors[6] == 1) {SetHMPID(); fDetectorString += "HMPID ";}
-  if(fDetectors[7] == 1) {SetPHOS(); fDetectorString += "PHOS ";}
-  if(fDetectors[9] == 1) {SetPMD(); fDetectorString += "PMD ";}
-  if(fDetectors[10] == 1) {SetMUON(); fDetectorString += "MUON ";}
-  if(fDetectors[12] == 1) {SetFMD(); fDetectorString += "FMD ";}
-  if(fDetectors[13] == 1) {SetTZERO(); fDetectorString += "T0 ";}
-  if(fDetectors[14] == 1) {SetVZERO(); fDetectorString += "VZERO ";}
-  if(fDetectors[15] == 1) {SetZDC(); fDetectorString += "ZDC ";}
-  if(fDetectors[18] == 1) {SetEMCAL(); fDetectorString += "EMCAL";}
+  if(fDetectors[0] == 1) {
+    SetITSSPD(); fDetectorArray->Add(new TObjString("SPD"));}
+  if(fDetectors[1] == 1) {
+    SetITSSDD(); fDetectorArray->Add(new TObjString("SDD"));}
+  if(fDetectors[2] == 1) {
+    SetITSSSD(); fDetectorArray->Add(new TObjString("SSD"));}
+  if(fDetectors[3] == 1) {
+    SetTPC(); fDetectorArray->Add(new TObjString("TPC"));}
+  if(fDetectors[4] == 1) {
+    SetTRD(); fDetectorArray->Add(new TObjString("TRD"));}
+  if(fDetectors[5] == 1) {
+    SetTOF(); fDetectorArray->Add(new TObjString("TOF"));}
+  if(fDetectors[6] == 1) {
+    SetHMPID();fDetectorArray->Add(new TObjString("HMPID"));}
+  if(fDetectors[7] == 1) {
+    SetPHOS(); fDetectorArray->Add(new TObjString("PHOS"));}
+  if(fDetectors[9] == 1) {
+    SetPMD(); fDetectorArray->Add(new TObjString("PMD"));}
+  if(fDetectors[10] == 1) {
+    SetMUON(); fDetectorArray->Add(new TObjString("MUON"));}
+  if(fDetectors[12] == 1) {
+    SetFMD(); fDetectorArray->Add(new TObjString("FMD"));}
+  if(fDetectors[13] == 1) {
+    SetTZERO(); fDetectorArray->Add(new TObjString("T0"));}
+  if(fDetectors[14] == 1) {
+    SetVZERO(); fDetectorArray->Add(new TObjString("VZERO"));}
+  if(fDetectors[15] == 1) {
+    SetZDC(); fDetectorArray->Add(new TObjString("ZDC"));}
+  if(fDetectors[18] == 1) {
+    SetEMCAL(); fDetectorArray->Add(new TObjString("EMCAL"));}
 }
 
 //___________________________________________________________________________