Fix by Hermes that resets -1 and adds additional checks
authorcblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 4 Dec 2008 14:28:54 +0000 (14:28 +0000)
committercblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 4 Dec 2008 14:28:54 +0000 (14:28 +0000)
TRD/AliTRDarrayADC.cxx
TRD/AliTRDarrayADC.h
TRD/AliTRDclusterizer.cxx
TRD/AliTRDmcmSim.cxx
TRD/AliTRDmcmSim.h
TRD/AliTRDrawData.cxx

index bb0b3cf543c1969bb6e8219889808a5d56bba1f8..da85ef6760d0c7a51042811b1b64de2bd3c4fa1b 100644 (file)
@@ -433,6 +433,22 @@ void AliTRDarrayADC::Expand()
   // Expand the array
   //
 
+  //Check if the array has not been already expanded
+  Int_t verif=0;
+  for(Int_t i=0; i<fNAdim; i++)
+    {
+      if(fADC[i]<-1)
+       {
+         verif++;
+       }
+    }
+  
+  if(verif==0)
+    {
+      //       AliDebug(1,"Nothing to expand");
+      return;
+    }
+
   Int_t *longz;
   longz = new Int_t[fNAdim];
   Int_t *longm;
@@ -526,3 +542,20 @@ void AliTRDarrayADC::Expand()
   if(longz) delete [] longz;
 
 }
+//____________________________________________________________________________________
+void AliTRDarrayADC::DeleteNegatives()
+{
+
+  //
+  //This method modifies the digits array, changing the negative values (-1)
+  //Produced during digitization into zero.
+  //
+
+  for(Int_t a=0; a<fNAdim; a++)
+    {
+      if(fADC[a]==-1)
+       {
+         fADC[a]=0;
+       }
+    }
+}
index 9bcba83a6c8e717792e6ec59fa2bed80b9b9b19b..ca724e167e54f6f8db80a31f465c2c9df037fccc 100644 (file)
@@ -41,6 +41,7 @@ class AliTRDarrayADC: public TObject
   Int_t   GetNrow() const {return fNrow;};
   Int_t   GetNcol() const {return fNcol;};
   Int_t   GetDim() const {return fNAdim;};
+  void    DeleteNegatives();
 
  protected:
 
index bbfae1dfd757f7cea465e4b8cc1ff23f53c8f100..dc7b75bd685c14a456fb51b5bcd74053130f05e0 100644 (file)
@@ -564,6 +564,7 @@ Bool_t AliTRDclusterizer::MakeClusters()
     // This is to take care of switched off super modules
     if (!digitsIn->HasData()) continue;
     digitsIn->Expand();
+    digitsIn->DeleteNegatives();  // Restore digits array to >=0 values
     AliTRDSignalIndex* indexes = fDigitsManager->GetIndexes(i);
     if (indexes->IsAllocated() == kFALSE){
       fDigitsManager->BuildIndexes(i);
index 27b203fe364dbb76f1806903f773b806df53be88..aee5fd22dd7528d54e50335905d9d3e9c71bd61f 100644 (file)
@@ -2735,5 +2735,25 @@ void AliTRDmcmSim::FlagDigitsArray(AliTRDarrayADC *tempdigs, Int_t valrow)
        }
     }
 }
+//_______________________________________________________________________________________
+void AliTRDmcmSim::RestoreZeros()
+{
+  //
+  // Restore the zero-suppressed values (set as -1) to the value 0
+  //
+
+  for( Int_t iadc = 1 ; iadc < fNADC-1; iadc++ ) 
+    {
+      for( Int_t it = 0 ; it < fNTimeBin ; it++ ) 
+       {
+         
+         if(fADCF[iadc][it]==-1)  //if is a supressed zero, reset to zero
+           {
+             fADCF[iadc][it]=0;
+             fADCR[iadc][it]=0;
+           }     
+       }
+    }
 
+}
 
index 9399cf965797193bd91eeb4b4fb0f9349f2b0216..1994e8dd89d081a5addc491350bc73b7916c187f 100644 (file)
@@ -59,6 +59,7 @@ class AliTRDmcmSim : public TObject {
          void      GeneratefZSM1Dim();                        // Generate the ZSM1Dim based on digits array info
          void      StartfastZS(Int_t pads, Int_t timebis);                    // For ZS in the digitizer
          void      FlagDigitsArray(AliTRDarrayADC *tempdigs, Int_t valrow);   //Set flags on the digits array
+         void      RestoreZeros(); 
 
  protected:
 
index f24638d0ad03eb096f53737f6016822836e47c54..5fdbb741be6be5b0d86f2a28446959aae5f9fb05 100644 (file)
@@ -381,6 +381,7 @@ Int_t AliTRDrawData::ProduceHcData(AliTRDarrayADC *digits, Int_t side, Int_t det
                //              mcm[entry]->ZSMapping();  // Calculate zero suppression mapping
                mcm[entry]->CopyArrays();
                mcm[entry]->GeneratefZSM1Dim();
+               mcm[entry]->RestoreZeros();
 
                if (tracklet_on) {
                    mcm[entry]->Tracklet(); 
@@ -724,6 +725,7 @@ Int_t AliTRDrawData::ProduceHcDataV3(AliTRDarrayADC *digits, Int_t side , Int_t
        //      mcm[entry]->ZSMapping();  // Calculate zero suppression mapping
        mcm[entry]->CopyArrays();
        mcm[entry]->GeneratefZSM1Dim();
+       mcm[entry]->RestoreZeros();
 
        if (tracklet_on) {
            mcm[entry]->Tracklet();