#include "AliMUONDarcHeader.h"
#include "AliMUONRegHeader.h"
-///
+//-----------------------------------------------------------------------------
+/// \class AliMUONDarcHeader
/// Darc structure for trigger raw data.
/// Each DDL contains one Darc structure
/// The structure includes the information of the Darc boards
/// The structure containes the information of the 8 (at most)
/// regional structures.
///
+/// \author Christian Finck
+//-----------------------------------------------------------------------------
/// \cond CLASSIMP
ClassImp(AliMUONDarcHeader)
const UInt_t AliMUONDarcHeader::fgkEndOfDarc = 0xDEADFACE;
const UInt_t AliMUONDarcHeader::fgkEndOfGlobal = 0xDEADBEEF;
+ const UInt_t AliMUONDarcHeader::fgkDarcVadorhType = 4;
+ const UInt_t AliMUONDarcHeader::fgkDarcDefaultType = 6;
//___________________________________________
AliMUONDarcHeader::AliMUONDarcHeader()
fDarcL2R(0),
fDarcClk(0),
fDarcHold(0),
- fDarcSpare(0)
+ fDarcSpare(0),
+ fRegHeaderArray(new TClonesArray("AliMUONRegHeader",8))
+
{
- //
- // ctor
- //
+ /// ctor
+
for (Int_t i = 0; i < 4; i++)
fGlobalInput[i] = 0;
for (Int_t i = 0; i < 6; i++)
fGlobalScaler[i] = 0;
- fRegHeaderArray = new TClonesArray("AliMUONRegHeader",8);
}
//___________________________________________
AliMUONDarcHeader::AliMUONDarcHeader(const AliMUONDarcHeader& event)
- : TObject(event)
-{
- //
- // copy ctor
- //
- fWord = event.fWord;
- fGlobalOutput = event.fGlobalOutput;
- fGlobalL0 = event.fGlobalL0;
- fGlobalClk = event.fGlobalClk;
- fGlobalHold = event.fGlobalHold;
- fGlobalSpare = event.fGlobalSpare;
-
- fDarcL0R = event.fDarcL0R;
- fDarcL1P = event.fDarcL1P;
- fDarcL1S = event.fDarcL1S;
- fDarcL2A = event.fDarcL2A;
- fDarcL2R = event.fDarcL2R;
- fDarcClk = event.fDarcClk;
- fDarcHold = event.fDarcHold;
- fDarcSpare = event.fDarcSpare;
+ : TObject(event),
+ fWord(event.fWord),
+ fGlobalOutput(event.fGlobalOutput),
+ fGlobalL0(event.fGlobalL0),
+ fGlobalClk(event.fGlobalClk),
+ fGlobalHold(event.fGlobalHold),
+ fGlobalSpare(event.fGlobalSpare),
+
+ fDarcL0R(event.fDarcL0R),
+ fDarcL1P(event.fDarcL1P),
+ fDarcL1S(event.fDarcL1S),
+ fDarcL2A(event.fDarcL2A),
+ fDarcL2R(event.fDarcL2R),
+ fDarcClk(event.fDarcClk),
+ fDarcHold(event.fDarcHold),
+ fDarcSpare(event.fDarcSpare),
+ fRegHeaderArray(new TClonesArray("AliMUONRegHeader", 8))
+{
+ ///
+ /// copy ctor
+ ///
for (Int_t i = 0; i < 4; i++)
fGlobalInput[i] = event.fGlobalInput[i];
for (Int_t i = 0; i < 6; i++)
fGlobalScaler[i] = event.fGlobalScaler[i];
- fRegHeaderArray = new TClonesArray("AliMUONRegHeader", 8);
for (Int_t index = 0; index < (event.fRegHeaderArray)->GetEntriesFast(); index++) {
new ((*fRegHeaderArray)[fRegHeaderArray->GetEntriesFast()])
AliMUONRegHeader(*(AliMUONRegHeader*)(event.fRegHeaderArray)->At(index));
//___________________________________________
AliMUONDarcHeader& AliMUONDarcHeader::operator=(const AliMUONDarcHeader& event)
{
- //
- // assignment operator
- //
+ ///
+ /// assignment operator
+ ///
if (this == &event) return *this;
fWord = event.fWord;
//___________________________________________
AliMUONDarcHeader::~AliMUONDarcHeader()
{
- //
- // dtor
- //
+ ///
+ /// dtor
+ ///
fRegHeaderArray->Delete();
delete fRegHeaderArray;
}
//___________________________________________
void AliMUONDarcHeader::SetScalersNumbers()
{
- // set numbers for scaler events for Darc header
- // since this is provided by the experiment
- // put dummy numbers to check the monitoring
+ /// set numbers for scaler events for Darc header
+ /// since this is provided by the experiment
+ /// put dummy numbers to check the monitoring
fGlobalL0 = 1000;
fGlobalClk = 10000;
fGlobalScaler[i] = i;
}
+//___________________________________________
+Bool_t AliMUONDarcHeader::GetEventType() const
+{
+ /// return 1 for physics trigger
+ /// return 0 for software trigger
+ // 01 = trigger physics
+ // 10 = trigger software "start of run"
+ // 11 = trigger software "end of run"
+ // 00 = other trigger software
+
+ Bool_t b1 = (fWord >> 30) & 0x1;
+ Bool_t b2 = !((fWord >> 31) & 0x1);
+
+ //printf("%d\n", b1 & b2);
+ //printf("%d %d\n", b2 , b1);
+ return (b1 & b2);
+}
//___________________________________________
void AliMUONDarcHeader::Clear(Option_t* )
{
- // Clear TClones arrays
- // instead of deleting
- //
+ /// Clear TClones arrays
+ /// instead of deleting
+ ///
fRegHeaderArray->Clear("C");
}