]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliRecoParam.cxx
Updating filename
[u/mrichter/AliRoot.git] / STEER / AliRecoParam.cxx
index 1dc9e3f2b53ecbed2e68fb643dbe7301ea124642..898912cab78b44c49dc7c92eec0fe3df105aa649 100644 (file)
@@ -48,6 +48,36 @@ AliRecoParam::AliRecoParam():
   }
 }
 
+AliRecoParam::AliRecoParam(const AliRecoParam& par) :
+  TObject(),
+  fEventSpecie(par.fEventSpecie)
+{
+  // copy constructor
+  for(Int_t iDet = 0; iDet < kNDetectors; iDet++) {
+    if (par.fDetRecoParams[iDet])
+      fDetRecoParams[iDet] = (TObjArray*)(par.fDetRecoParams[iDet]->Clone());
+    else
+      fDetRecoParams[iDet] = NULL;
+  }
+  for(Int_t iSpecie = 0; iSpecie < kNSpecies; iSpecie++) {
+    for(Int_t iDet = 0; iDet < kNDetectors; iDet++) {
+      fDetRecoParamsIndex[iSpecie][iDet] = par.fDetRecoParamsIndex[iSpecie][iDet];
+    }
+  }
+}
+
+//_____________________________________________________________________________
+AliRecoParam& AliRecoParam::operator = (const AliRecoParam& par)
+{
+  // assignment operator
+
+  if(&par == this) return *this;
+
+  this->~AliRecoParam();
+  new(this) AliRecoParam(par);
+  return *this;
+}
+
 AliRecoParam::~AliRecoParam(){
   // Destructor
   // ...
@@ -66,7 +96,7 @@ void  AliRecoParam::Print(Option_t *option) const {
   //
   for(Int_t iDet = 0; iDet < kNDetectors; iDet++) {
     if (fDetRecoParams[iDet]){
-      printf("AliDetectorRecoParam objects for detector %d\n",iDet); 
+      printf("AliDetectorRecoParam objects for detector %d:\n",iDet); 
       Int_t nparam = fDetRecoParams[iDet]->GetEntriesFast();
       for (Int_t iparam=0; iparam<nparam; iparam++){
        AliDetectorRecoParam * param = (AliDetectorRecoParam *)fDetRecoParams[iDet]->At(iparam);
@@ -91,6 +121,7 @@ const AliDetectorRecoParam *AliRecoParam::GetDetRecoParam(Int_t iDet) const
 {
   // Return AliDetectorRecoParam object for a given detector
   // according to the event specie provided as an argument
+  if ( iDet >= kNDetectors) return NULL;
   if (!fDetRecoParams[iDet]) return NULL;
   if (fDetRecoParams[iDet]->GetEntries() == 0) return NULL;
 
@@ -136,7 +167,14 @@ Bool_t AliRecoParam::AddDetRecoParamArray(Int_t iDet, TObjArray* parArray)
     AliDetectorRecoParam *par = (AliDetectorRecoParam*)parArray->At(i);
     if (!par) continue;
     if (par->IsDefault()) defaultFound = kTRUE;
-  }
+
+    Int_t specie = par->GetEventSpecie();
+    for(Int_t iBit = 0; iBit < kNSpecies; iBit++) {
+      if (specie & (1 << iBit)) {
+       fDetRecoParamsIndex[iBit][iDet] = i;
+      }
+    }
+ }
    
   fDetRecoParams[iDet] = parArray;