X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONBusStruct.cxx;h=ab0acd9ed781fec5b730855e933e523dadc7678e;hb=07062f37d37b17ef656fe337069c701056816939;hp=ac712e6589dd629617d6c9ce664c990194d01a69;hpb=84ceeb061c491574f58f4af93d166ef9768ad95e;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONBusStruct.cxx b/MUON/AliMUONBusStruct.cxx index ac712e6589d..ab0acd9ed78 100644 --- a/MUON/AliMUONBusStruct.cxx +++ b/MUON/AliMUONBusStruct.cxx @@ -14,12 +14,15 @@ **************************************************************************/ /* $Id$ */ - + #include "AliMUONBusStruct.h" -#include "AliLog.h" +#include "AliLog.h" +#include +#include -/// +//----------------------------------------------------------------------------- +/// \class AliMUONBusStruct /// Bus patch structure for tracker raw data /// each Dsp contains at most 5 bus patch structure /// Beside the total length and length of the below data @@ -27,13 +30,18 @@ /// and data structure itself (11bits for manu id, 6 bits for channel id and /// 12 bits for charge) /// +/// \author Christian Finck +//----------------------------------------------------------------------------- +using std::cout; +using std::endl; /// \cond CLASSIMP ClassImp(AliMUONBusStruct) /// \endcond const Int_t AliMUONBusStruct::fgkHeaderLength = 4; const UInt_t AliMUONBusStruct::fgkDefaultDataKey = 0xB000000B; +const Int_t AliMUONBusStruct::fgkManuNofChannels(64); //___________________________________________ AliMUONBusStruct::AliMUONBusStruct() @@ -42,31 +50,34 @@ AliMUONBusStruct::AliMUONBusStruct() fTotalLength(0), fLength(0), fBusPatchId(0), - fBufSize(1024), +fBufSize(43*fgkManuNofChannels), + /* assuming 43 manus max per bustpatch. + Anyway fData is resized where needed (though it makes it slower) */ + fData(new UInt_t[fBufSize]), fDspId(0), fBlkId(0) { - // - // ctor - // - fData = new UInt_t[fBufSize]; + /// + /// ctor + /// + } //___________________________________________ AliMUONBusStruct::~AliMUONBusStruct() { - // - // dtor - // + /// + /// dtor + /// delete[] fData; } //___________________________________________ void AliMUONBusStruct::SetAlloc(Int_t size) { - // - // Allocate size per default 1024; - // return if size < 1024 - // + /// + /// Allocate size + /// return if size < fBufSize + /// if (size < fBufSize) return; else @@ -75,9 +86,9 @@ void AliMUONBusStruct::SetAlloc(Int_t size) //___________________________________________ void AliMUONBusStruct::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, not so sure ? + /// could have used class from ROOT + /// but the structure must be as simple as possible + /// to be written on disc blockwise, not so sure ? if (fLength == fBufSize) ResizeData(); fData[fLength++] = data; @@ -87,9 +98,9 @@ void AliMUONBusStruct::AddData(UInt_t data) //___________________________________________ void AliMUONBusStruct::ResizeData(Int_t size) { - // In case of resizing the vector - // the most simplest way to do it - // + /// In case of resizing the vector + /// the most simplest way to do it + /// if (size == 0) fBufSize *= 2; else @@ -102,21 +113,21 @@ void AliMUONBusStruct::ResizeData(Int_t size) } //___________________________________________ AliMUONBusStruct:: -AliMUONBusStruct(const AliMUONBusStruct& event): TObject(event) +AliMUONBusStruct(const AliMUONBusStruct& event) + : TObject(event), + fDataKey(event.fDataKey), + fTotalLength(event.fTotalLength), + fLength(event.fLength), + fBusPatchId(event.fBusPatchId), + fBufSize(event.fBufSize), + fData(new UInt_t[event.fBufSize]), + fDspId(event.fDspId), + fBlkId(event.fBlkId) { - // - // copy ctor - // - fDataKey = event.fDataKey; - fTotalLength = event.fTotalLength; - fLength = event.fLength; - fBusPatchId = event.fBusPatchId; - fBufSize = event.fBufSize; - - fBlkId = event.fBlkId; - fDspId = event.fDspId; + /// + /// copy ctor + /// - fData = new UInt_t[event.fBufSize]; for (int i = 0; i < event.fBufSize; i++) fData[i] = event.fData[i]; } @@ -124,9 +135,9 @@ AliMUONBusStruct(const AliMUONBusStruct& event): TObject(event) AliMUONBusStruct& AliMUONBusStruct::operator=(const AliMUONBusStruct& event) { - // - // assignment operator - // + /// + /// assignment operator + /// if (this == &event) return *this; fDataKey = event.fDataKey; fTotalLength = event.fTotalLength; @@ -147,10 +158,10 @@ AliMUONBusStruct::operator=(const AliMUONBusStruct& event) //___________________________________________ Int_t AliMUONBusStruct::Compare(const TObject *obj) const { - // - // sort bus patch by bus patch number - // important for AliMUONRawWriter - // + /// + /// sort bus patch by bus patch number + /// important for AliMUONRawWriter + /// AliMUONBusStruct* event = (AliMUONBusStruct*) obj; return (fBusPatchId > event->GetBusPatchId()) ? 1 : -1; } @@ -158,18 +169,17 @@ Int_t AliMUONBusStruct::Compare(const TObject *obj) const //___________________________________________ void AliMUONBusStruct::Clear(Option_t *) { - // clear - // delete the allocated memory - // - + /// clear + /// delete the allocated memory + /// delete[] fData; } //___________________________________________ UInt_t AliMUONBusStruct::GetData(Int_t n) const { - // - // get data - // + /// + /// get data + /// if ( n>=0 && n=0 && n> 29) & 0x7; + /// + /// get parity + /// + if ( n>=0 && n> 31) & 0x1; AliError("Index outside limits."); return 0; @@ -191,9 +201,9 @@ Char_t AliMUONBusStruct::GetParity(Int_t n) const //___________________________________________ UShort_t AliMUONBusStruct::GetManuId(Int_t n) const { - // - // get manu Id - // + /// + /// get manu Id + /// if ( n>=0 && n> 18) & 0x7FF; AliError("Index outside limits."); @@ -201,11 +211,11 @@ UShort_t AliMUONBusStruct::GetManuId(Int_t n) const } //___________________________________________ -Char_t AliMUONBusStruct::GetChannelId(Int_t n) const +UChar_t AliMUONBusStruct::GetChannelId(Int_t n) const { - // - // get channel Id - // + /// + /// get channel Id + /// if ( n>=0 && n> 12) & 0x3F; AliError("Index outside limits."); @@ -215,11 +225,31 @@ Char_t AliMUONBusStruct::GetChannelId(Int_t n) const //___________________________________________ UShort_t AliMUONBusStruct::GetCharge(Int_t n) const { - // - // get charge (in ADC) - // + /// + /// get charge (in ADC) + /// if ( n>=0 && n