Re-create the CDH header for each event to take into account correctly
authorivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 7 Feb 2008 10:48:12 +0000 (10:48 +0000)
committerivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 7 Feb 2008 10:48:12 +0000 (10:48 +0000)
the trigger mask info
(Christian)

MUON/AliMUON.cxx
MUON/AliMUONRawWriter.cxx
MUON/AliMUONRawWriter.h

index 395e1cb..b1ccdef 100644 (file)
@@ -51,7 +51,8 @@
 #include "AliLoader.h"
 #include "AliRunDigitizer.h"
 #include "AliMC.h"
-#include "AliRun.h"    
+#include "AliRun.h"
+#include "AliRawDataHeaderSim.h"
 #include "AliMUON.h"
 #include "AliMUONChamberTrigger.h"
 #include "AliMUONConstants.h"
@@ -482,6 +483,8 @@ void AliMUON::Digits2Raw()
 {
 /// Convert digits of the current event to raw data
 
+  AliRawDataHeaderSim header;
+
   if (!fRawWriter)
   {
     fRawWriter = new AliMUONRawWriter;
@@ -510,6 +513,7 @@ void AliMUON::Digits2Raw()
   
   treeD->GetEvent(0);
   
+  fRawWriter->SetHeader(header);
   if (!fRawWriter->Digits2Raw(digitStore,triggerStore))
   {
     AliError("pb writting raw data");
index 7e9ca05..d22dab4 100644 (file)
@@ -77,6 +77,7 @@
 #include "AliMpVSegmentation.h"
 
 #include "AliRawReader.h"
+#include "AliRawDataHeaderSim.h"
 #include "AliBitPacking.h" 
 #include "AliDAQ.h"
 #include "AliLog.h"
@@ -99,7 +100,7 @@ AliMUONRawWriter::AliMUONRawWriter()
     fLocalStruct(new AliMUONLocalStruct()),
     fDDLStore(AliMpDDLStore::Instance()),
     fScalerEvent(kFALSE),
-    fHeader(),
+    fHeader(0x0),
     fBufferSize((((43*AliMpConstants::ManuNofChannels() + 4)*5 + 10)*5 + 8)*2),
     fBuffer(new Int_t [fBufferSize])
 {
@@ -309,6 +310,10 @@ AliMUONRawWriter::WriteTrackerDDL(AliMpExMap& busPatchMap, Int_t iDDL)
  
   AliCodeTimerAuto("")
 
+  if (fHeader == 0x0) {
+    AliError("Raw data header must be set");
+    return;
+  }
   memset(fBuffer,0,fBufferSize*sizeof(Int_t));
   
   AliMpDDL* ddl = fDDLStore->GetDDL(iDDL);
@@ -406,13 +411,14 @@ AliMUONRawWriter::WriteTrackerDDL(AliMpExMap& busPatchMap, Int_t iDDL)
   // writting onto disk
   // total length in bytes
   // DDL header
-  Int_t headerSize = sizeof(fHeader)/4;
+
+  Int_t headerSize = sizeof(AliRawDataHeader)/4;
   
-  fHeader.fSize = (totalDDLLength + headerSize) * 4;
+  fHeader->fSize = (totalDDLLength + headerSize) * 4;
   
   AliFstream* file = new AliFstream(AliDAQ::DdlFileName("MUONTRK",iDDL));
   
-  file->WriteBuffer((char*)(&fHeader),headerSize*4);
+  file->WriteBuffer((char*)fHeader,headerSize*4);
   file->WriteBuffer((char*)fBuffer,sizeof(int)*index);
   delete file;
 }
@@ -432,6 +438,11 @@ Int_t AliMUONRawWriter::WriteTriggerDDL(const AliMUONVTriggerStore& triggerStore
   
   AliCodeTimerAuto("")
 
+  if (fHeader == 0x0) {
+    AliError("Raw data header must be set");
+    return 0;
+  }
+
  // DDL event one per half chamber
 
  // DDL header size
@@ -666,8 +677,8 @@ Int_t AliMUONRawWriter::WriteTriggerDDL(const AliMUONVTriggerStore& triggerStore
 
     // writting onto disk
     // write DDL's
-    fHeader.fSize = (index + headerSize) * 4;// total length in bytes
-    file[iDDL]->WriteBuffer((char*)(&fHeader),headerSize*4);
+    fHeader->fSize = (index + headerSize) * 4;// total length in bytes
+    file[iDDL]->WriteBuffer((char*)fHeader,headerSize*4);
     file[iDDL]->WriteBuffer((char*)buffer,sizeof(int)*index);
   
   }
index 9e76a94..006766f 100644 (file)
@@ -12,7 +12,6 @@
 //  Author Christian Finck and Laurent Aphecetche, Subatech
 
 #include <TObject.h>
-#include "AliRawDataHeaderSim.h"
 #include "AliFstream.h"
 
 class AliMUONBlockHeader;
@@ -27,6 +26,7 @@ class AliMUONVDigitStore;
 class AliMUONVTriggerStore;
 class AliMpDDLStore;
 class AliMpExMap;
+class AliRawDataHeaderSim;
 
 class AliMUONRawWriter : public TObject 
 {
@@ -39,6 +39,9 @@ class AliMUONRawWriter : public TObject
   
   void SetScalersNumbers();
 
+  /// Set the header of DDL
+  void SetHeader(AliRawDataHeaderSim& header) {fHeader = &header;}
+
 private:
 
   void Digits2BusPatchMap(const AliMUONVDigitStore& digitStore, AliMpExMap& busPatchMap);
@@ -70,12 +73,12 @@ private:
 
   Bool_t fScalerEvent;               ///< flag to generates scaler event
 
-  AliRawDataHeaderSim    fHeader;           ///< header of DDL
+  AliRawDataHeaderSim*    fHeader;           ///< header of DDL
   
   Int_t fBufferSize; //!< size of internal data buffer
   Int_t* fBuffer; //!< internal data buffer
 
-  ClassDef(AliMUONRawWriter,4) // MUON cluster reconstructor in ALICE
+  ClassDef(AliMUONRawWriter,5) // MUON cluster reconstructor in ALICE
 };
        
 #endif