Updated raw data format including scaler events for trigger (Christian)
authormartinez <martinez@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 20 Oct 2004 07:51:59 +0000 (07:51 +0000)
committermartinez <martinez@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 20 Oct 2004 07:51:59 +0000 (07:51 +0000)
13 files changed:
MUON/AliMUONDDLTracker.cxx
MUON/AliMUONDDLTracker.h
MUON/AliMUONDDLTrigger.cxx
MUON/AliMUONDDLTrigger.h
MUON/AliMUONRawData.cxx
MUON/AliMUONScalerEventTrigger.cxx [new file with mode: 0644]
MUON/AliMUONScalerEventTrigger.h [new file with mode: 0644]
MUON/AliMUONSubEventTracker.cxx
MUON/AliMUONSubEventTracker.h
MUON/AliMUONSubEventTrigger.cxx
MUON/AliMUONSubEventTrigger.h
MUON/MUONLinkDef.h
MUON/libMUON.pkg

index 28682b8..c589a23 100644 (file)
@@ -17,7 +17,9 @@
 #include "AliRawDataHeader.h"
 
 ClassImp(AliMUONDDLTracker)
- const Int_t AliMUONDDLTracker::fEndOfDDL = 0x0FFFFFFFF;
+ const Int_t AliMUONDDLTracker::fgkBlkHeaderLength = 8;
+ const Int_t AliMUONDDLTracker::fgkDspHeaderLength = 8;
+ const Int_t AliMUONDDLTracker::fgkEndOfDDL = 0x0FFFFFFFF;
 
 //___________________________________________
 AliMUONDDLTracker::AliMUONDDLTracker()
index 42dbec3..2b42d3d 100644 (file)
@@ -20,6 +20,7 @@ public:
    Int_t   GetDspId()          const {return fDSPId;}
    Int_t   GetBlkTriggerWord(Int_t n) const {return fBlkTriggerWord[n];}
    const Int_t   GetPadding()  const {return fPadding;}
+   const Int_t   GetBlkHeaderLength() const {return fgkBlkHeaderLength;}
 
    void    SetTotalBlkLength(Int_t l) {fTotalBlkLength = l;}
    void    SetBlkLength(Int_t l)      {fBlkLength = l;}
@@ -38,6 +39,7 @@ public:
    void    SetDSPId1(Int_t d)         {fDSPId1 = d;}  
    void    SetDspTriggerWord(Int_t w, Int_t n) {fDspTriggerWord[n] = w;}
    void    SetEventWord(Int_t w)      {fEventWord = w;}
+   const Int_t   GetDspHeaderLength() const {return fgkDspHeaderLength;}
 
    Int_t* GetBlkHeader() {return &fTotalBlkLength;}
    Int_t* GetDspHeader() {return &fTotalDspLength;}
@@ -45,7 +47,7 @@ public:
    AliRawDataHeader GetHeader(){return fHeader;}
    Int_t GetHeaderSize() {return sizeof(AliRawDataHeader)/4;} // in words
 
-   const Int_t   GetEoD()      const {return fEndOfDDL;}  
+   const Int_t   GetEoD()      const {return fgkEndOfDDL;}  
 
  private:
 
@@ -55,6 +57,7 @@ public:
    Int_t     fDSPId;             // Dsp id
    Int_t     fBlkTriggerWord[4]; // counter trigger word
    Int_t     fPadding;           // padding dummy word for 64 bits transfer
+   static const Int_t fgkBlkHeaderLength; // header length in word
 
    // Dsp header
    Int_t     fTotalDspLength;     // total length of block structure
@@ -62,8 +65,9 @@ public:
    Int_t     fDSPId1;             // Dsp id ??
    Int_t     fDspTriggerWord[4];  // counter trigger word ?
    Int_t     fEventWord;          // nb word odd = 1, even = 0
+   static const Int_t fgkDspHeaderLength; // header length
 
-   static const Int_t fEndOfDDL;  // end of DDL
+   static const Int_t fgkEndOfDDL;  // end of DDL
 
 
    AliRawDataHeader fHeader;   // header of DDL
index 6488c6f..5651d5a 100644 (file)
@@ -17,6 +17,8 @@
 
 ClassImp(AliMUONDDLTrigger)
  
+ const Int_t AliMUONDDLTrigger::fgkHeaderLength = 6;
+
 //___________________________________________
 AliMUONDDLTrigger::AliMUONDDLTrigger()
   :  TObject(),
index 21ce348..8f82f83 100644 (file)
@@ -19,17 +19,21 @@ public:
    Int_t   GetGlobalOuput()        const {return fGlobalOutput;}
    Int_t   GetEoD()                const {return fEndOfDDL;}  
 
-   //DarcId:2,Version:8,SerialNb:4,EventType:4,MBZ:14;
-   Char_t   GetDarcId()    {return (Char_t)(fddlWord >> 30) &  0x10;}
-   Char_t   GetVersion()   {return (Char_t)(fddlWord >> 22) &  0xFF;}
-   Char_t   GetSerialNb()  {return (Char_t)(fddlWord >> 18) &  0xF;}
-   Char_t   GetEventType() {return (Char_t)(fddlWord >> 14) &  0xF;}
+   //DarcId:4,SerialNb:4,Version:8,EventType:4,GlobalFlag:4,MBZ:8;
+   Char_t   GetDarcId()     {return (Char_t)(fddlWord >> 28) &  0xF;}
+   Char_t   GetSerialNb()   {return (Char_t)(fddlWord >> 24) &  0xF;}
+   Char_t   GetVersion()    {return (Char_t)(fddlWord >> 16) &  0xFF;}
+   Char_t   GetEventType()  {return (Char_t)(fddlWord >> 12) &  0xF;}
+   Char_t   GetGlobalFlag() {return (Char_t)(fddlWord >>  8) &  0xF;}
 
    void    SetDDLWord(UInt_t w) {fddlWord = w;}
    void    SetGlobalInput(Int_t in, Int_t n) {fGlobalInput[n] = in;}
    void    SetGlobalOutput(Int_t out) {fGlobalOutput = out;}
    void    SetEoD(Int_t e) {fEndOfDDL = e;}  
 
+   const Int_t GetHeaderLength() const {return fgkHeaderLength;}
+
+
    UInt_t* GetEnhancedHeader() {return &fddlWord;}
 
    AliRawDataHeader GetHeader(){return fHeader;}
@@ -40,6 +44,9 @@ public:
    UInt_t    fddlWord;           // first word
    Int_t     fGlobalInput[4];    // global input
    Int_t     fGlobalOutput;      // global ouput
+
+   static const Int_t fgkHeaderLength; // header length
+
    Int_t     fEndOfDDL;          // end of DDL
 
    AliRawDataHeader fHeader;   // header of DDL
index 30d62a6..fd70181 100644 (file)
@@ -63,21 +63,17 @@ AliMUONRawData::AliMUONRawData(AliLoader* loader)
   // initialize container
   fMUONData  = new AliMUONData(fLoader,"MUON","MUON");
 
-  // trigger decision, temp solution, local & global has to move to Digits Tree
-//   fTrigDec = new AliMUONTriggerDecision(fLoader);
-//   fTrigData = fTrigDec->GetMUONData();
-
   // initialize array
   fSubEventArray[0] = new TClonesArray("AliMUONSubEventTracker",1000);
   fSubEventArray[1] = new TClonesArray("AliMUONSubEventTracker",1000);
 
-  // initialize array
+  // initialize array not used for the moment
   fSubEventTrigArray[0] = new TClonesArray("AliMUONSubEventTrigger",1000);
   fSubEventTrigArray[1] = new TClonesArray("AliMUONSubEventTrigger",1000);
 
   // ddl pointer
   fDDLTracker = new AliMUONDDLTracker();
-  fDDLTrigger= new  AliMUONDDLTrigger();
+  fDDLTrigger = new  AliMUONDDLTrigger();
 }
 
 //__________________________________________________________________________
@@ -313,6 +309,7 @@ Int_t AliMUONRawData::WriteTrackerDDL(Int_t iCh)
   
   Int_t iBusPatch;
   Int_t iEntries;
+  Int_t length;
 
   for (Int_t iDDL = 0; iDDL < 2; iDDL++) {
  
@@ -330,18 +327,20 @@ Int_t AliMUONRawData::WriteTrackerDDL(Int_t iCh)
     for (Int_t iBlock = 0; iBlock < 2; iBlock++) {
 
       // block header
-      fDDLTracker->SetTotalBlkLength(0xFFFFFFFF);
-      memcpy(&buffer[index],fDDLTracker->GetBlkHeader(),32);
+      //    fDDLTracker->SetTotalBlkLength(0xFFFFFFFF);
+      length = fDDLTracker->GetBlkHeaderLength();
+      memcpy(&buffer[index],fDDLTracker->GetBlkHeader(),length*4);
       indexBlk = index;
-      index += 8; 
+      index += length; 
 
       for (Int_t iDsp = 0; iDsp < 5; iDsp++) {
 
        // DSP header
-       fDDLTracker->SetTotalDspLength(0xEEEEEEEE);
-       memcpy(&buffer[index],fDDLTracker->GetDspHeader(),32);
+       //      fDDLTracker->SetTotalDspLength(0xEEEEEEEE);
+       length = fDDLTracker->GetDspHeaderLength();
+       memcpy(&buffer[index],fDDLTracker->GetDspHeader(),length*4);
        indexDsp = index;
-       index += 8; 
+       index += length; 
 
        for (Int_t i = 0; i < 5; i++) {
 
@@ -355,8 +354,9 @@ Int_t AliMUONRawData::WriteTrackerDDL(Int_t iCh)
 
          if (busPatchId == iBusPatch) {
            // add bus patch structure
-           memcpy(&buffer[index],temp->GetAddress(),16);
-           index+= 4;
+           length = temp->GetHeaderLength();
+           memcpy(&buffer[index],temp->GetAddress(),length*4);
+           index += length;
            for (Int_t j = 0; j < temp->GetLength(); j++) 
              buffer[index++] =  temp->GetData(j);
            if (iEntries < nEntries-1)
@@ -368,15 +368,15 @@ Int_t AliMUONRawData::WriteTrackerDDL(Int_t iCh)
            buffer[index++] = 0xdeadbeef; // trigger word
          }
        } // bus patch
-       buffer[indexDsp] = index - indexDsp;
-       buffer[indexDsp+1] = index - indexDsp -8;
+       buffer[indexDsp] = index - indexDsp; // dsp length
+       buffer[indexDsp+1] = index - indexDsp - fDDLTracker->GetDspHeaderLength();
        if ((index - indexDsp) % 2 == 0)
          buffer[indexDsp+7] = 0;
        else
          buffer[indexDsp+7] = 1;
       } // dsp
-      buffer[indexBlk] = index - indexBlk;
-      buffer[indexBlk+1] = index - indexBlk -8;
+      buffer[indexBlk] = index - indexBlk; // block length
+      buffer[indexBlk+1] = index - indexBlk - fDDLTracker->GetBlkHeaderLength();
     }
     if (iDDL == 0) {
       // write DDL 1
@@ -411,7 +411,7 @@ Int_t AliMUONRawData::WriteTriggerDDL()
  // DDL header
   AliRawDataHeader header = fDDLTrigger->GetHeader();
   Int_t headerSize = fDDLTrigger->GetHeaderSize();
-
+  Int_t length;
   TClonesArray* localTrigger;
   TClonesArray* globalTrigger;
   AliMUONGlobalTrigger* gloTrg;
@@ -434,8 +434,9 @@ Int_t AliMUONRawData::WriteTriggerDDL()
   Int_t iLocCard, locCard;
   Char_t locDec, trigY, posY, devX, posX,regOut;
   Int_t version = 1; // software version
-  Int_t eventType =1; // trigger type: 1 for physics ?
+  Int_t eventType = 1; // trigger type: 1 for physics ?
   Int_t serialNb = 0xF; // serial nb of card: all bits on for the moment
+  Int_t globalFlag = 1; // set to 2 if global info present in DDL else set to 1
 
   Int_t nEntries = (Int_t) (localTrigger->GetEntries());// 234 local cards
   // stored the local card id that's fired
@@ -447,23 +448,33 @@ Int_t AliMUONRawData::WriteTriggerDDL()
   if (!nEntries)
     AliError("No Trigger information available");
 
-  buffer = new Int_t [680]; // [16(local)*5 words + 4 words]*8(reg) + 8 words = 680
+  buffer = new Int_t [672]; // [16(local)*5 words + 3 words]*8(reg) + 8 words = 672
 
   for (Int_t iDDL = 0; iDDL < 2; iDDL++) {
     
     index = 0; 
 
     // DDL enhanced header
-    word =0;
-    AliBitPacking::PackWord((UInt_t)iDDL+1,word,30,31); //see AliMUONDDLTrigger.h for details
-    AliBitPacking::PackWord((UInt_t)version,word,22,29);
-    AliBitPacking::PackWord((UInt_t)serialNb,word,18,21);
-    AliBitPacking::PackWord((UInt_t)eventType,word,14,17);
-
+    word = 0;
+    AliBitPacking::PackWord((UInt_t)iDDL+1,word,28,31); //see AliMUONDDLTrigger.h for details
+    AliBitPacking::PackWord((UInt_t)serialNb,word,24,27);
+    AliBitPacking::PackWord((UInt_t)version,word,16,23);
+    AliBitPacking::PackWord((UInt_t)eventType,word,12,15);
+
+    if (iDDL == 0) // suppose global info in DDL one
+      globalFlag = 2;
+    else 
+      globalFlag = 1;
+    AliBitPacking::PackWord((UInt_t)globalFlag,word,8,11);
     fDDLTrigger->SetDDLWord(word);
-    fDDLTrigger->SetGlobalOutput(gloTrigPat);
-    memcpy(&buffer[index],fDDLTrigger->GetEnhancedHeader(),24);
-    index += 6; 
+
+    if (iDDL == 0)
+      fDDLTrigger->SetGlobalOutput(gloTrigPat);// no global input for the moment....
+    else 
+      fDDLTrigger->SetGlobalOutput(0);
+    length = fDDLTrigger->GetHeaderLength(); 
+    memcpy(&buffer[index],fDDLTrigger->GetEnhancedHeader(),length*4);
+    index += length; 
 
     for (Int_t iReg = 0; iReg < 8; iReg++) {
 
@@ -613,21 +624,6 @@ void AliMUONRawData::GetDummyMapping(Int_t iCh, Int_t iCath, const AliMUONDigit*
       channelId = (id % chPerBus) % 64; //start at zero 
       channelId &= 0x3F; // 6 bits
 
-//       id =  (TMath::Abs(digit->PadX()) * offsetX + digit->PadY() + offsetY +
-//          offsetCath * iCath);
-//       busPatchId = id/50;
-
-//       Int_t inBusId = id - (maxChannel/50 * busPatchId);// id channel in buspatch
-//       Int_t manuPerBus = (maxChannel/(50*64)); // number of manus per buspatch
-
-//       // 64 manu cards for one buspatch
-//       manuId = inBusId/manuPerBus;
-//       manuId &= 0x7FF; // 11 bits 
-
-//       // channel id
-//       channelId = (inBusId % manuPerBus);
-//       channelId &= 0x3F; // 6 bits
-
       if (fPrintLevel == 2)
        printf("id: %d, busPatchId %d, manuId: %d, channelId: %d, maxchannel: %d, chPerBus %d\n",
               id, busPatchId, manuId, channelId, maxChannel, chPerBus);
diff --git a/MUON/AliMUONScalerEventTrigger.cxx b/MUON/AliMUONScalerEventTrigger.cxx
new file mode 100644 (file)
index 0000000..1a805a2
--- /dev/null
@@ -0,0 +1,65 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+#include "AliMUONScalerEventTrigger.h"
+
+ClassImp(AliMUONScalerEventTrigger)
+  const Int_t AliMUONScalerEventTrigger::fgkLocalScalerLength  = 45;
+  const Int_t AliMUONScalerEventTrigger::fgkRegScalerLength    = 11;
+  const Int_t AliMUONScalerEventTrigger::fgkGlobalScalerLength = 10;
+  const Int_t AliMUONScalerEventTrigger::fgkDarcScalerLength   =  6;
+
+//___________________________________________
+AliMUONScalerEventTrigger::AliMUONScalerEventTrigger()
+ : fLocalL0(0),   
+   fLocalHold(0), 
+   fLocalClk(0),   
+   fLocalLPtNTrig(0), 
+   fLocalHPtNTrig(0), 
+   fLocalLPtRTrig(0), 
+   fLocalHPtRTrig(0), 
+   fLocalLPtLTrig(0), 
+   fLocalHPtLTrig(0), 
+   fLocalLPtSTrig(0), 
+   fLocalHPtSTrig(0), 
+   fLocalEOS(0),         
+   fLocalReset(0),       
+
+   fRegL0(0), 
+   fRegClk(0),
+   fRegHold(0),      
+
+   fGlobalL0(0), 
+   fGlobalClk(0),
+   fGlobalHold(0),      
+   fGlobalSpare(0),     
+
+   fDarcL0R(0),
+   fDarcL0U(0),
+   fDarcL0P(0),
+   fDarcL0S(0),
+   fDarcClk(0),
+   fDarcHold(0)
+{
+  for (Int_t i = 0; i < 8*4; i++)
+    fLocalScaler[i] = 0;
+
+  for (Int_t i = 0; i < 8; i++)
+    fRegScaler[i] = 0;
+
+  for (Int_t i = 0; i < 6; i++)
+    fGlobalScaler[i] = 0;
+
+}
diff --git a/MUON/AliMUONScalerEventTrigger.h b/MUON/AliMUONScalerEventTrigger.h
new file mode 100644 (file)
index 0000000..74081ba
--- /dev/null
@@ -0,0 +1,114 @@
+#ifndef ALIMUONSCALEREVENTTRIGGER_H
+#define ALIMUONSCALEREVENTTRIGGER_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+
+#include <TObject.h>
+
+class AliMUONScalerEventTrigger : public TObject{
+public:
+   AliMUONScalerEventTrigger();
+   virtual ~AliMUONScalerEventTrigger(){;}
+
+   // local get methods
+   UInt_t  GetLocalL0()      const {return fLocalL0;}
+   UInt_t  GetLocalHold()    const {return fLocalHold;}
+   UInt_t  GetLocalClock()   const {return fLocalClk;}
+   UChar_t GetLocalSwitch()  const {return (fLocalEOS >> 2) & 0x3FF;}
+   UChar_t GetLocalComptXY() const {return  fLocalEOS & 3;}
+
+   UShort_t GetXY1(Int_t n) {return  (n % 2 == 0) ? 
+       (fLocalScaler[n] &  0xFFFF) : (fLocalScaler[n] >> 16) &  0xFFFF;}
+   UShort_t GetXY2(Int_t n) {return  (n % 2 == 0) ? 
+       (fLocalScaler[8 + n] &  0xFFFF) : (fLocalScaler[8 + n] >> 16) &  0xFFFF;}
+   UShort_t GetXY3(Int_t n) {return  (n % 2 == 0) ? 
+       (fLocalScaler[8*2 + n] &  0xFFFF) : (fLocalScaler[8*2 + n] >> 16) &  0xFFFF;}
+   UShort_t GetXY4(Int_t n) {return  (n % 2 == 0) ? 
+       (fLocalScaler[8*3 + n] &  0xFFFF) : (fLocalScaler[8*3 + n] >> 16) &  0xFFFF;}
+
+   // regional get methods
+   UInt_t  GetRegL0()      const {return fRegL0;}
+   UInt_t  GetRegClock()   const {return fRegClk;}
+   const UInt_t* GetRegScaler()  const {return fRegScaler;}
+   UInt_t  GetRegHold()    const {return fRegHold;}
+
+   // global get methods
+   UInt_t  GetGlobalL0()      const {return fGlobalL0;}
+   UInt_t  GetGlobalClock()   const {return fGlobalClk;}
+   const UInt_t* GetGlobalScaler()  const {return fGlobalScaler;}
+   UInt_t  GetGlobalHold()    const {return fGlobalHold;}
+   UInt_t  GetGlobalSpare()   const {return fGlobalSpare;}
+
+   // DARC get methods
+   UInt_t  GetDarcL0R()     const {return fDarcL0R;}
+   UInt_t  GetDarcL0U()     const {return fDarcL0U;}
+   UInt_t  GetDarcL0P()     const {return fDarcL0P;}
+   UInt_t  GetDarcL0S()     const {return fDarcL0S;}
+   UInt_t  GetDarcClock()   const {return fDarcClk;}
+   UInt_t  GetDarcHold()    const {return fDarcHold;}
+   
+   // don't use setting methods but memcpy
+   UInt_t* GetLocalScalers()  {return &fLocalL0;} 
+   UInt_t* GetRegScalers()    {return &fRegL0;}   
+   UInt_t* GetGlobalScalers() {return &fGlobalL0;}
+   UInt_t* GetDarcScalers()   {return &fDarcL0R;} 
+
+   // get scaler length
+   const Int_t GetLocalScalerLength()  const {return fgkLocalScalerLength;} 
+   const Int_t GetRegScalerLength()    const {return fgkRegScalerLength;}   
+   const Int_t GetGlobalScalerLength() const {return fgkGlobalScalerLength;}
+   const Int_t GetDarcScalerLength()   const {return fgkDarcScalerLength;} 
+
+ private:
+
+   // local card scalers   
+   UInt_t     fLocalL0;        // local L0
+   UInt_t     fLocalHold;      // local hold (dead time)
+   UInt_t     fLocalClk;       // local clock
+
+   UInt_t     fLocalLPtNTrig;  // local low Pt no trigger
+   UInt_t     fLocalHPtNTrig;  // local high Pt no trigger
+
+   UInt_t     fLocalLPtRTrig;  // local low Pt right trigger
+   UInt_t     fLocalHPtRTrig;  // local high Pt right trigger
+
+   UInt_t     fLocalLPtLTrig;  // local low Pt left trigger
+   UInt_t     fLocalHPtLTrig;  // local high Pt left trigger
+
+   UInt_t     fLocalLPtSTrig;  // local low Pt straight trigger
+   UInt_t     fLocalHPtSTrig;  // local high Pt straight trigger
+
+   UInt_t     fLocalScaler[8*4];   // local data
+   UInt_t     fLocalEOS;           // contains switches conf. & flag for reading X (0) or Y (1) in fLocalScaler
+   UInt_t     fLocalReset;         // reset signal
+   static const Int_t      fgkLocalScalerLength;  // length of local scaler in word
+
+   // regional card scalers   
+   UInt_t     fRegL0;         // regional L0
+   UInt_t     fRegClk;        // regional clock
+   UInt_t     fRegScaler[8];  // regional ouput
+   UInt_t     fRegHold;       // regional hold (dead time)
+   static const Int_t      fgkRegScalerLength;  // length of regional scaler in word
+
+   // global card scalers   
+   UInt_t     fGlobalL0;         // global L0
+   UInt_t     fGlobalClk;        // global clock
+   UInt_t     fGlobalScaler[6];  // global ouput
+   UInt_t     fGlobalHold;       // global hold (dead time)
+   UInt_t     fGlobalSpare;      // global spare
+   static const Int_t      fgkGlobalScalerLength;  // length of global scaler in word
+
+   // DARC Scalers
+   UInt_t     fDarcL0R;       // DARC L0 received
+   UInt_t     fDarcL0U;       // DARC L0 used
+   UInt_t     fDarcL0P;       // DARC Physical L0
+   UInt_t     fDarcL0S;       // DARC Software (checking) L0
+   UInt_t     fDarcClk;       // DARC clock
+   UInt_t     fDarcHold;      // DARC hold (dead time)
+   static const Int_t      fgkDarcScalerLength;  // length of DARC scaler in word
+
+   ClassDef(AliMUONScalerEventTrigger,1) 
+};
+#endif
index 12c7106..3a9b331 100644 (file)
@@ -17,6 +17,8 @@
 
 ClassImp(AliMUONSubEventTracker)
 
+ const Int_t AliMUONSubEventTracker::fgkHeaderLength = 4;
+
 //___________________________________________
 AliMUONSubEventTracker::AliMUONSubEventTracker()
   :  TObject(),
@@ -49,7 +51,7 @@ void AliMUONSubEventTracker::AddData(UInt_t data)
 {
   // could have used class from ROOT
   // but the structure must be as simple as possible
-  // to be written on disc blockwise
+  // to be written on disc blockwise, not so sure ?
   if (fLength == fBufSize) 
     ResizeData();
   fData[fLength++] = data;
index 54b0638..eee1b18 100644 (file)
@@ -40,6 +40,8 @@ public:
    Bool_t  IsSortable() const {return kTRUE;}
    Int_t   Compare(const TObject *obj) const;
 
+   const Int_t GetHeaderLength() const {return fgkHeaderLength;}
+
    Int_t* GetAddress() {return &fTotalLength;}
 
  private:
@@ -47,6 +49,9 @@ public:
    Int_t     fLength;        // length of raw data
    Int_t     fBusPatchId;    // bus patch id
    Int_t     fTriggerWord ;  // counter trigger word
+
+   static const Int_t fgkHeaderLength;   // header length in word
+
    UInt_t*   fData;          // data 
 
    Int_t     fBufSize;      // initial size for data array
index 30b7054..0476d19 100644 (file)
@@ -18,6 +18,8 @@
 
 ClassImp(AliMUONSubEventTrigger)
  
+ const Int_t AliMUONSubEventTrigger::fgkRegHeaderLength = 3;
+
 //___________________________________________
 AliMUONSubEventTrigger::AliMUONSubEventTrigger()
   :  TObject(),
index 2e18cdb..a598c8f 100644 (file)
@@ -13,9 +13,9 @@ public:
    virtual ~AliMUONSubEventTrigger(){;}
 
 
-   UInt_t  GetRegWord() const {return fRegWord;}
-   Int_t   GetRegInput(Int_t n)  const {return fRegInput[n];}
-   Int_t   GetLocalData(Int_t n)  const {return fLocalData[n];}
+   UInt_t  GetRegWord()          const {return fRegWord;}
+   UInt_t  GetRegInput(Int_t n)  const {return fRegInput[n];}
+   UInt_t  GetLocalData(Int_t n) const {return fLocalData[n];}
 
    //MBZ:3,serialNb:5,Version:8,RegId:4,MBZ:4,RegOut:8
    Char_t   GetSerialNb()  {return (Char_t)(fRegWord >> 24) &  0x1F;}
@@ -41,17 +41,21 @@ public:
    Char_t   GetXPos(Int_t n)     {return fLocalData[16*n + 4]       &  0x1F;}
 
    void    SetRegWord(UInt_t w) {fRegWord = w;}
-   void    SetRegInput(Int_t in, Int_t n) {fRegInput[n] = in;}
-   void    SetLocalData(Int_t d, Int_t n) {fLocalData[n] = d;}
+   void    SetRegInput(UInt_t in, Int_t n) {fRegInput[n] = in;}
+   void    SetLocalData(UInt_t d, Int_t n) {fLocalData[n] = d;}
    
+   const Int_t GetRegHeaderLength() const {return fgkRegHeaderLength;}
    UInt_t* GetAddress() {return &fRegWord;}
 
  private:
    
    UInt_t    fRegWord;          // first word
-   Int_t     fRegInput[2];      // regional input
-   Int_t     fLocalData[16*5];  // local data
+   UInt_t    fRegInput[2];      // regional input
+
+   static const Int_t fgkRegHeaderLength; // header length in word
+
+   UInt_t    fLocalData[16*5];  // local data
     
-   ClassDef(AliMUONSubEventTrigger,2)  // MUON Pad Hit
+   ClassDef(AliMUONSubEventTrigger,3)
 };
 #endif
index 6fcc08c..5f01df5 100644 (file)
@@ -57,6 +57,7 @@
 #pragma link C++ class  AliMUONDDLTracker+;
 #pragma link C++ class  AliMUONSubEventTracker+;
 #pragma link C++ class  AliMUONSubEventTrigger+;
+#pragma link C++ class  AliMUONScalerEventTrigger+;
 #pragma link C++ class  AliMUONRawData+;
 #pragma link C++ class  AliMUONRawStream+;
 #pragma link C++ class  AliMUONReconstructor+;
index f5c257a..e5df601 100644 (file)
@@ -42,7 +42,7 @@ SRCS         = AliMUONChamber.cxx AliMUONChamberTrigger.cxx \
                AliMUONTrackK.cxx AliMUONClusterFinderAZ.cxx AliMUONPixel.cxx \
                AliMUONLoader.cxx AliMUONData.cxx  AliMUONDataInterface.cxx \
                AliMUONDDLTrigger.cxx AliMUONSubEventTrigger.cxx AliMUONDDLTracker.cxx \
-               AliMUONRawData.cxx AliMUONSubEventTracker.cxx AliMUONRawStream.cxx \
+               AliMUONScalerEventTrigger.cxx AliMUONRawData.cxx AliMUONSubEventTracker.cxx AliMUONRawStream.cxx \
                AliMUONRecoCheck.cxx