]> 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 0844621d05a3da2474e7a9c5fb86125cfbf0cf24..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(),
-  fITS(kFALSE),
+  fDetectorArray(new TObjArray()),
+  fMask(0),
+  fITSSPD(kFALSE),
+  fITSSDD(kFALSE),
+  fITSSSD(kFALSE),
   fTPC(kFALSE),
   fTRD(kFALSE),
   fTOF(kFALSE),
   fHMPID(kFALSE),
   fPHOS(kFALSE),
-  fZDC(kFALSE),
-  fMUON(kFALSE),
   fPMD(kFALSE),
-  fEMCAL(kFALSE),
+  fMUON(kFALSE),
+  fFMD(kFALSE),
+  fTZERO(kFALSE),
   fVZERO(kFALSE),
-  fTZERO(kFALSE)
+  fZDC(kFALSE),
+  fEMCAL(kFALSE)
 {
   // Default constructor
+  for(Int_t k = 0; k < 32; k++) fDetectors[k] = 0;
 }
 
 //___________________________________________________________________________
 AliDetectorTag::AliDetectorTag(const AliDetectorTag & detTag) :
   TObject(detTag),
-  fITS(detTag.fITS),
+  fDetectorArray(detTag.fDetectorArray),
+  fMask(detTag.fMask),
+  fITSSPD(detTag.fITSSPD),
+  fITSSDD(detTag.fITSSDD),
+  fITSSSD(detTag.fITSSSD),
   fTPC(detTag.fTPC),
   fTRD(detTag.fTRD),
   fTOF(detTag.fTOF),
   fHMPID(detTag.fHMPID),
   fPHOS(detTag.fPHOS),
-  fZDC(detTag.fZDC),
-  fMUON(detTag.fMUON),
   fPMD(detTag.fPMD),
-  fEMCAL(detTag.fEMCAL),
+  fMUON(detTag.fMUON),
+  fFMD(detTag.fFMD),
+  fTZERO(detTag.fTZERO),
   fVZERO(detTag.fVZERO),
-  fTZERO(detTag.fTZERO)
+  fZDC(detTag.fZDC),
+  fEMCAL(detTag.fEMCAL)
  {
   // DetectorTag copy constructor
+  for(Int_t k = 0; k < 32; k++) fDetectors[k] = detTag.fDetectors[k];
 }
 
 //___________________________________________________________________________
@@ -69,24 +85,109 @@ AliDetectorTag & AliDetectorTag::operator=(const AliDetectorTag &detTag) {
   if (this != &detTag) {
     TObject::operator=(detTag);
     
-    fITS = detTag.fITS;
+    fDetectorArray = detTag.fDetectorArray;
+    fMask = detTag.fMask;   
+    fITSSPD = detTag.fITSSPD;
+    fITSSDD = detTag.fITSSDD;
+    fITSSSD = detTag.fITSSSD;
     fTPC = detTag.fTPC;
     fTRD = detTag.fTRD;
     fTOF = detTag.fTOF;
     fHMPID = detTag.fHMPID;
     fPHOS = detTag.fPHOS;
-    fZDC = detTag.fZDC;
-    fMUON = detTag.fMUON;
     fPMD = detTag.fPMD;
-    fEMCAL = detTag.fEMCAL;
-    fVZERO = detTag.fVZERO;
+    fMUON = detTag.fMUON;
+    fFMD = detTag.fFMD;
     fTZERO = detTag.fTZERO;
+    fVZERO = detTag.fVZERO;
+    fZDC = detTag.fZDC;
+    fEMCAL = detTag.fEMCAL;
+    for(Int_t k = 0; k < 32; k++) fDetectors[k] = detTag.fDetectors[k];
   }
   return *this;
 }
 
-
 //___________________________________________________________________________
 AliDetectorTag::~AliDetectorTag() {
   // Destructor
+  delete fDetectorArray;
+}
+
+//___________________________________________________________________________
+void AliDetectorTag::Int2Bin() {
+  // Convert the integer into binary
+  Int_t j=0; 
+  UInt_t mask = fMask;
+  for(Int_t k = 0; k < 32; k++) fDetectors[k] = 0;
+  while(mask > 0) {
+   fDetectors[j] = mask%2;
+   mask = mask/2;
+   j++; 
+  }
+  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(); 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"));}
+}
+
+//___________________________________________________________________________
+void AliDetectorTag::PrintDetectorMask() {
+  //prints the detector mask
+  AliInfo( Form( "ITS-SPD: %d", GetITSSPD()) );
+  AliInfo( Form( "ITS-SDD: %d", GetITSSDD()) );
+  AliInfo( Form( "ITS-SSD: %d", GetITSSSD()) );
+  AliInfo( Form( "TPC: %d", GetTPC()) );
+  AliInfo( Form( "TRD: %d", GetTRD()) );
+  AliInfo( Form( "TOF: %d", GetTOF()) );
+  AliInfo( Form( "HMPID: %d", GetHMPID()) );
+  AliInfo( Form( "PHOS: %d", GetPHOS()) );
+  AliInfo( Form( "PMD: %d", GetPMD()) );
+  AliInfo( Form( "MUON: %d", GetMUON()) );
+  AliInfo( Form( "FMD: %d", GetFMD()) );
+  AliInfo( Form( "TZERO: %d", GetTZERO()) );
+  AliInfo( Form( "VZERO: %d", GetVZERO()) );
+  AliInfo( Form( "ZDC: %d", GetZDC()) );
+  AliInfo( Form( "EMCAL: %d", GetEMCAL()) );
 }