From 0014fbe86d661734f2bc40d7d1b644ac81e91ee9 Mon Sep 17 00:00:00 2001 From: ivana Date: Thu, 7 Feb 2008 10:48:12 +0000 Subject: [PATCH] Re-create the CDH header for each event to take into account correctly the trigger mask info (Christian) --- MUON/AliMUON.cxx | 6 +++++- MUON/AliMUONRawWriter.cxx | 23 +++++++++++++++++------ MUON/AliMUONRawWriter.h | 9 ++++++--- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/MUON/AliMUON.cxx b/MUON/AliMUON.cxx index 395e1cbdcca..b1ccdefd5fa 100644 --- a/MUON/AliMUON.cxx +++ b/MUON/AliMUON.cxx @@ -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"); diff --git a/MUON/AliMUONRawWriter.cxx b/MUON/AliMUONRawWriter.cxx index 7e9ca052c30..d22dab4767b 100644 --- a/MUON/AliMUONRawWriter.cxx +++ b/MUON/AliMUONRawWriter.cxx @@ -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); } diff --git a/MUON/AliMUONRawWriter.h b/MUON/AliMUONRawWriter.h index 9e76a945cb4..006766f7da4 100644 --- a/MUON/AliMUONRawWriter.h +++ b/MUON/AliMUONRawWriter.h @@ -12,7 +12,6 @@ // Author Christian Finck and Laurent Aphecetche, Subatech #include -#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 -- 2.43.0