]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDmcmSim.cxx
During simulation: fill STU region w/ non null time sums
[u/mrichter/AliRoot.git] / TRD / AliTRDmcmSim.cxx
index df54db993d51863c3234e73e5a6038b238f5d000..7aefe9ab531451a1e85267795d093199343a1876 100644 (file)
@@ -549,17 +549,18 @@ void AliTRDmcmSim::SetData(AliTRDarrayADC* const adcArray, AliTRDdigitsManager *
           continue;
 
         fDict[iDict] = newDict;
-        fDict[iDict]->Expand();
+       if(fDict[iDict]->GetDim() != 0)
+         fDict[iDict]->Expand();
       }
       else {
         fDict[iDict] = newDict;
-        if (fDict[iDict])
+        if (fDict[iDict] && (fDict[iDict]->GetDim() != 0) )
           fDict[iDict]->Expand();
-        }
+      }
 
       // If there is no data, set dictionary to zero to avoid crashes
       if (fDict[iDict]->GetDim() == 0)  {
-        AliError(Form("Dictionary %i of det. %i has dim. 0", fDetector, iDict));
+        // AliError(Form("Dictionary %i of det. %i has dim. 0", iDict, fDetector));
         fDict[iDict] = 0x0;
       }
     }
@@ -616,7 +617,7 @@ void AliTRDmcmSim::SetDataByPad(AliTRDarrayADC* const adcArray, AliTRDdigitsMana
 
       // If there is no data, set dictionary to zero to avoid crashes
       if (fDict[iDict]->GetDim() == 0)  {
-        AliError(Form("Dictionary %i of det. %i has dim. 0", fDetector, iDict));
+        AliError(Form("Dictionary %i of det. %i has dim. 0", iDict, fDetector));
         fDict[iDict] = 0x0;
       }
     }
@@ -935,10 +936,14 @@ UShort_t AliTRDmcmSim::FilterGainNextSample(Int_t adc, UShort_t value)
   UShort_t    fgta = fTrapConfig->GetTrapReg(AliTRDtrapConfig::kFGTA, fDetector, fRobPos, fMcmPos); // 20;
   UShort_t    fgtb = fTrapConfig->GetTrapReg(AliTRDtrapConfig::kFGTB, fDetector, fRobPos, fMcmPos); // 2060;
 
+  UInt_t fgfExtended = 0x700 + fgf;      // The corr factor which is finally applied has to be extended by 0x700 (hex) or 0.875 (dec)
+                                         // because fgf=0 correspons to 0.875 and fgf=511 correspons to 1.125 - 2^(-11)
+                                         // (see TRAP User Manual for details)
+
   UInt_t corr; // corrected value
 
   value &= 0xFFF;
-  corr = (value * fgf) >> 11;
+  corr = (value * fgfExtended) >> 11;
   corr = corr > 0xfff ? 0xfff : corr;
   corr = AddUintClipping(corr, fga, 12);
 
@@ -1569,7 +1574,7 @@ void AliTRDmcmSim::FitTracklet()
       nHits   = fit0->fNhits + fit1->fNhits; // number of hits
       sumX    = fit0->fSumX  + fit1->fSumX;
       sumX2   = fit0->fSumX2 + fit1->fSumX2;
-      denom   = nHits * sumX2 - sumX * sumX;
+      denom   = ((Long64_t) nHits)*((Long64_t) sumX2) - ((Long64_t) sumX)*((Long64_t) sumX);
 
       mult    = mult / denom; // exactly like in the TRAP program
       q0      = fit0->fQ0    + fit1->fQ0;