]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/MUONTRKOCCda.cxx
updated vertex selection
[u/mrichter/AliRoot.git] / MUON / MUONTRKOCCda.cxx
index d5342c436a1472e7c3fa7933f43bfdf8f8cc741e..91735ff781177c2258b49a4d7f73b62d56e44f97 100644 (file)
@@ -6,7 +6,7 @@
  Run Type: PHYSICS STANDALONE
  DA Type: MON
  Number of events needed: all (or at least as much as possible...)
- Input Files:
+ Input Files: 09000094301009.10.raw
  Output Files: mch.occupancy, to be exported to the DAQ FXS
  Trigger types used: PHYSICS_EVENT
 */
@@ -51,6 +51,7 @@
 #include "daqDA.h"
 #include "event.h"
 #include "monitor.h"
+#include "signal.h"
 
 #ifdef ALI_AMORE
 #include <AmoreDA.h>
@@ -60,7 +61,7 @@
 #endif
 
 const char* OUTPUT_FILE = "mch.occupancy";
-const char* DAVERSION = "MUONTRKOCCda v1.0";
+const char* DAVERSION = "MUONTRKOCCda v1.3 ($Id$)";
 
 //______________________________________________________________________________
 void Add(AliMUONVStore& destStore, const AliMUONVStore& srcStore)
@@ -86,7 +87,7 @@ void Add(AliMUONVStore& destStore, const AliMUONVStore& srcStore)
       {
         for ( Int_t j = 0; j  < source->Dimension(); ++j ) 
         {
-          dest->SetValueAsInt(i,j,dest->ValueAsInt(i,j)+source->ValueAsInt(i,j));
+          dest->SetValueAsIntFast(i,j,dest->ValueAsIntFast(i,j)+source->ValueAsIntFast(i,j));
         }
       }
     }
@@ -144,6 +145,8 @@ int main(int argc, char **argv)
   /// were seen per manu, and the number of events.
   ///
   
+  signal(SIGSEGV,SIG_DFL); // to be able to get core dumps...
+  
   TStopwatch timers;
   timers.Start(kTRUE); 
   
@@ -201,34 +204,40 @@ int main(int argc, char **argv)
     
     for(;;)
     {
-      struct eventHeaderStruct *event;
+      struct eventHeaderStruct *event(0x0);
       eventTypeType eventT;
       
       status=monitorGetEventDynamic((void **)&event);
       if (status!=0)
       {
-       printf("MCH Occupancy DA ERROR: %s\n", monitorDecodeError(status));
-       break;
+        printf("MCH Occupancy DA ERROR: %s\n", monitorDecodeError(status));
+        delete event;
+        break;
       }
 
       /* check shutdown condition */
-      if (daqDA_checkShutdown()) break;
-      
-// Check if one gets the event properly
-      if (status!=0)
+      if (daqDA_checkShutdown())
       {
-        printf("MCH Occupancy DA ERROR: monitorGetEventDynamic() failed: %s\n", monitorDecodeError(status));
-        return -1;
+        delete event;
+        break;
       }
-
+      
       /* retry if got no event */
       if (event==NULL) continue;
 
       ++numberOfEvents;
 
       eventT=event->eventType;
-      if ((eventT == END_OF_RUN)||(eventT == END_OF_RUN_FILES)) break;
-      if (eventT != PHYSICS_EVENT) continue;
+      if ((eventT == END_OF_RUN)||(eventT == END_OF_RUN_FILES)) 
+      {
+        delete event;
+        break;
+      }
+      if (eventT != PHYSICS_EVENT) 
+      {
+        delete event;
+        continue;
+      }
                  
       ++numberOfPhysicsEvent;
       
@@ -239,6 +248,8 @@ int main(int argc, char **argv)
         if ( runNumber != 0 ) 
         {
           cout << "Uh oh. That's bad... Changing of run number ???" << endl;
+          delete event;
+          delete rawReader;
           return -9999;
         }
         runNumber = rawReader->GetRunNumber();
@@ -247,7 +258,6 @@ int main(int argc, char **argv)
       AliMUONRawStreamTrackerHP stream(rawReader);
       
       stream.DisableWarnings();
-      stream.EnabbleErrorLogger();
       
       oneEventData.Clear();
       
@@ -282,9 +292,11 @@ int main(int argc, char **argv)
       {
         ++numberOfBadEvents;
       }
-    }
-    
-    delete rawReader;
+
+      delete event;
+      
+      delete rawReader;
+    }    
   }