Fix in the cycles container size
authorshahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 16 Apr 2013 10:42:36 +0000 (10:42 +0000)
committershahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 16 Apr 2013 10:42:36 +0000 (10:42 +0000)
ITS/UPGRADE/AliITSUSimulation.cxx
ITS/UPGRADE/AliITSUSimulation.h

index bad6ca6..0b28d5a 100644 (file)
@@ -99,7 +99,7 @@ void AliITSUSimulation::InitSimulationModule(AliITSUModule* mod, Int_t event, Al
   SetSegmentation(seg);
   SetResponseParam(resp);
   ClearMap();
-  memset(fCyclesID,0,2*kMaxROCycleAccept*sizeof(Bool_t));
+  memset(fCyclesID,0,(1+2*kMaxROCycleAccept)*sizeof(Bool_t));
   //
   if (event != fEvent) GenerateReadOutCycleOffset(); 
   SetEvent(event);
@@ -136,9 +136,13 @@ void AliITSUSimulation::UpdateMapSignal(UInt_t col,UInt_t row,Int_t trk,Int_t ht
 {
   // update map with new hit
   // Note: roCycle can be anything between -kMaxROCycleAccept : kMaxROCycleAccept
+  if (Abs(roCycle)>kMaxROCycleAccept) {
+    AliError(Form("CycleID %d is outside of allowed +-%d range",roCycle,kMaxROCycleAccept));
+    return;
+  }
   UInt_t ind = fSensMap->GetIndex(col,row,roCycle);
-  AliITSUSDigit* oldItem = (AliITSUSDigit*)fSensMap->GetItem(ind);
-  if (!oldItem) {
+  AliITSUSDigit* oldItem = (AliITSUSDigit*)fSensMap->GetItem(ind);  
+  if (!oldItem) {    
     fSensMap->RegisterItem( new(fSensMap->GetFree()) AliITSUSDigit(trk,ht,fModule->GetIndex(),ind,signal,roCycle) );
     fCyclesID[roCycle+kMaxROCycleAccept] = kTRUE;
   }
@@ -150,6 +154,10 @@ void AliITSUSimulation::UpdateMapSignal(UInt_t col,UInt_t row,Int_t trk,Int_t ht
 void AliITSUSimulation::UpdateMapNoise(UInt_t col,UInt_t row,Double_t noise, Int_t roCycle) 
 {
   // update map with new hit
+  if (Abs(roCycle)>kMaxROCycleAccept) {
+    AliError(Form("CycleID %d is outside of allowed +-%d range",roCycle,kMaxROCycleAccept));
+    return;
+  }
   UInt_t ind = fSensMap->GetIndex(col,row,roCycle);
   AliITSUSDigit* oldItem = (AliITSUSDigit*)fSensMap->GetItem(ind);
   if (!oldItem) {
index 9dda874..1e05102 100644 (file)
@@ -103,7 +103,7 @@ class AliITSUSimulation : public TObject
   AliITSUModule       *fModule;         //! module being processed
   Int_t                fEvent;          //! event number being processed
   Int_t                fDebug;          //!  debug flag
-  Bool_t               fCyclesID[2*kMaxROCycleAccept]; //! status of RO cycles
+  Bool_t               fCyclesID[2*kMaxROCycleAccept+1]; //! status of RO cycles
 
   ClassDef(AliITSUSimulation,1)       // Simulation base class