]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSSDigitizer.cxx
add protection against truncated events + coverity - Rachid
[u/mrichter/AliRoot.git] / PHOS / AliPHOSSDigitizer.cxx
index e5bbb1010f0f9d807ec9dd2cc69b3b57f830e1d1..a74938a8123e0b733669b6796a6ef61e15aec705 100644 (file)
@@ -151,8 +151,9 @@ AliPHOSSDigitizer::~AliPHOSSDigitizer() {
   AliRunLoader* rl = AliRunLoader::GetRunLoader(fEventFolderName) ;
   if(rl){
     AliPHOSLoader * phosLoader = 
-      dynamic_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
-    phosLoader->CleanSDigitizer() ;
+      static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
+    if(phosLoader)
+      phosLoader->CleanSDigitizer() ;
   }
 }
 
@@ -168,7 +169,7 @@ void AliPHOSSDigitizer::Init()
   if (!rl)
     rl = AliRunLoader::Open(GetTitle(), fEventFolderName) ; 
 
-  AliPHOSLoader * phosLoader = dynamic_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
+  AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
   phosLoader->PostSDigitizer(this);
   phosLoader->GetSDigitsDataLoader()->GetBaseTaskLoader()->SetDoNotReload(kTRUE);
 }
@@ -202,26 +203,26 @@ void AliPHOSSDigitizer::Exec(Option_t *option)
   
 /*
        // check the QA result for RAWS
-  AliQA * qa = AliQA::Instance(AliQA::kPHOS) ; 
-  if ( qa->IsSet(AliQA::kPHOS, AliQA::kRAW, AliQA::kFATAL)) {
+  AliQAv1 * qa = AliQAv1::Instance(AliQAv1::kPHOS) ; 
+  if ( qa->IsSet(AliQAv1::kPHOS, AliQAv1::kRAW, AliQAv1::kFATAL)) {
        AliFatal("QA status in RAW was Fatal") ;
-  } else if ( qa->IsSet(AliQA::kPHOS, AliQA::kRAW, AliQA::kERROR)) {
+  } else if ( qa->IsSet(AliQAv1::kPHOS, AliQAv1::kRAW, AliQAv1::kERROR)) {
        AliError("QA status in RAW was Error") ;
-  } else if ( qa->IsSet(AliQA::kPHOS, AliQA::kRAW, AliQA::kWARNING) ) {
+  } else if ( qa->IsSet(AliQAv1::kPHOS, AliQAv1::kRAW, AliQAv1::kWARNING) ) {
        AliWarning("QA status in RAW was Warning") ;
-  } else if ( qa->IsSet(AliQA::kPHOS, AliQA::kRAW, AliQA::kINFO) ) {
+  } else if ( qa->IsSet(AliQAv1::kPHOS, AliQAv1::kRAW, AliQAv1::kINFO) ) {
        AliInfo("QA status in RAW was Info") ;
   }
 */
   AliRunLoader* rl = AliRunLoader::GetRunLoader(fEventFolderName) ;
-  AliPHOSLoader * phosLoader = dynamic_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
-
+  AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
+  
   //switch off reloading of this task while getting event
   if (!fInit) { // to prevent overwrite existing file
     AliError( Form("Give a version name different from %s", fEventFolderName.Data()) ) ;
     return ;
   }
-
+  
   if (fLastEvent == -1) 
     fLastEvent = rl->GetNumberOfEvents() - 1 ;
   else 
@@ -252,7 +253,8 @@ void AliPHOSSDigitizer::Exec(Option_t *option)
 
     //Now make SDigits from hits, for PHOS it is the same, so just copy    
     for ( i = 0 ; i < hits->GetEntries() ; i++ ) {
-      AliPHOSHit * hit = dynamic_cast<AliPHOSHit *>(hits->At(i)) ;
+      
+      AliPHOSHit * hit = static_cast<AliPHOSHit *>(hits->At(i)) ;
       // Assign primary number only if contribution is significant
       
       if( hit->GetEnergy() > fPrimThreshold)
@@ -271,22 +273,22 @@ void AliPHOSSDigitizer::Exec(Option_t *option)
 
     fSDigitsInRun += nSdigits ;  
     sdigits->Expand(nSdigits) ;
-
-    for (i = 0 ; i < nSdigits ; i++) { 
-      AliPHOSDigit * digit = dynamic_cast<AliPHOSDigit *>(sdigits->At(i)) ; 
+    
+    for (i = 0 ; i < nSdigits ; i++) {       
+      AliPHOSDigit * digit = static_cast<AliPHOSDigit *>(sdigits->At(i)) ;
       digit->SetIndexInList(i) ;     
     }
-
+    
 //    // make Quality Assurance data
 //
 //    if (GetQADataMaker()->IsCycleDone() ) {
-//      GetQADataMaker()->EndOfCycle(AliQA::kHITS) ; 
-//       GetQADataMaker()->EndOfCycle(AliQA::kSDIGITS) ; 
-//      GetQADataMaker()->StartOfCycle(AliQA::kHITS) ; 
-//       GetQADataMaker()->StartOfCycle(AliQA::kSDIGITS, kTRUE) ; 
+//      GetQADataMaker()->EndOfCycle(AliQAv1::kHITS) ; 
+//       GetQADataMaker()->EndOfCycle(AliQAv1::kSDIGITS) ; 
+//      GetQADataMaker()->StartOfCycle(AliQAv1::kHITS) ; 
+//       GetQADataMaker()->StartOfCycle(AliQAv1::kSDIGITS, kTRUE) ; 
 //   }
-//    GetQADataMaker()->Exec(AliQA::kHITS, hits) ; 
-//    GetQADataMaker()->Exec(AliQA::kSDIGITS, sdigits) ; 
+//    GetQADataMaker()->Exec(AliQAv1::kHITS, hits) ; 
+//    GetQADataMaker()->Exec(AliQAv1::kSDIGITS, sdigits) ; 
 //    GetQADataMaker()->Increment() ;
        
     //Now write SDigits
@@ -307,8 +309,8 @@ void AliPHOSSDigitizer::Exec(Option_t *option)
   }// event loop
   
 //  //Write the quality assurance data 
-//  GetQADataMaker()->EndOfCycle(AliQA::kHITS) ;    
-//  GetQADataMaker()->EndOfCycle(AliQA::kSDIGITS) ;    
+//  GetQADataMaker()->EndOfCycle(AliQAv1::kHITS) ;    
+//  GetQADataMaker()->EndOfCycle(AliQAv1::kSDIGITS) ;    
 //  GetQADataMaker()->Finish() ;
 
   Unload();
@@ -351,7 +353,7 @@ void AliPHOSSDigitizer::PrintSDigits(Option_t * option)
   // Prints list of digits produced in the current pass of AliPHOSDigitizer
 
   AliRunLoader* rl = AliRunLoader::GetRunLoader(fEventFolderName) ;
-  AliPHOSLoader * phosLoader = dynamic_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
+  AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
 
   // Get PHOS Geometry object
   AliPHOSGeometry *geom;
@@ -371,8 +373,8 @@ void AliPHOSSDigitizer::PrintSDigits(Option_t * option)
     Int_t maxEmc = geom->GetNModules() * geom->GetNCristalsInModule() ;
     Int_t index ;
     for (index = 0 ; (index < sdigits->GetEntriesFast()) && 
-        ((dynamic_cast<AliPHOSDigit *> (sdigits->At(index)))->GetId() <= maxEmc) ; index++) {
-      digit = dynamic_cast<AliPHOSDigit *>( sdigits->At(index) ) ;
+        ((static_cast<AliPHOSDigit *> (sdigits->At(index)))->GetId() <= maxEmc) ; index++) {
+      digit = static_cast<AliPHOSDigit *>( sdigits->At(index) ) ;
       //  if(digit->GetNprimary() == 0) 
       //       continue;
 //       printf("%6d  %8d    %6.5e %4d      %2d :\n", // YVK
@@ -393,7 +395,7 @@ void AliPHOSSDigitizer::PrintSDigits(Option_t * option)
     Int_t maxEmc = geom->GetNModules() * geom->GetNCristalsInModule() ;
     Int_t index ;
     for (index = 0 ; index < sdigits->GetEntriesFast(); index++) {
-      digit = dynamic_cast<AliPHOSDigit *>( sdigits->At(index) ) ;
+      digit = static_cast<AliPHOSDigit *>( sdigits->At(index) ) ;
       if(digit->GetId() > maxEmc){
        printf("\n%6d  %8d    %4d      %2d :",
                digit->GetId(), digit->GetAmp(), digit->GetIndexInList(), digit->GetNprimary()) ;  
@@ -411,7 +413,8 @@ void AliPHOSSDigitizer::Unload() const
 {
   // Unloads the objects from the folder
   AliRunLoader* rl = AliRunLoader::GetRunLoader(fEventFolderName) ;
-  AliPHOSLoader * phosLoader = dynamic_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
+  AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
+  
   phosLoader->UnloadHits() ; 
   phosLoader->UnloadSDigits() ; 
 }