X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=VZERO%2FAliVZERORawStream.h;h=6909d9fa38f6888479c51ed11c4d5f3c7e8f69fd;hb=68f766453286e62a6e5a4d6b903349b503faedce;hp=42830c16fe5e452ba1a61bbf8adfa88a1a18a140;hpb=a83ba31ae9263e9e1e271ea5e58c436f38465cc3;p=u%2Fmrichter%2FAliRoot.git diff --git a/VZERO/AliVZERORawStream.h b/VZERO/AliVZERORawStream.h index 42830c16fe5..6909d9fa38f 100644 --- a/VZERO/AliVZERORawStream.h +++ b/VZERO/AliVZERORawStream.h @@ -9,9 +9,16 @@ /// The format of the raw data corresponds to the one /// implemented in AliVZEROBuffer class. /// +/// PLEASE NOTE that Int_t channel is here the FEE channel from 0 to 63 in the +/// order defined by Yannick Zoccarato which is not the same order as the order +/// defined in aliroot by the naming and numbering conventions. +/// Therefore one has to go from FEE_Channel to AliRoot_Channel using +/// GetOfflineChannel(Int_t channel) when going from Online to Offline !!! +/// /////////////////////////////////////////////////////////////////////////////// #include +#include class AliRawReader; @@ -44,9 +51,11 @@ class AliVZERORawStream: public TObject { // Getters of ADC signals, ADC pedestals, time information and corresponding flags : - UShort_t GetADC(Int_t channel) const - { return fADC[channel][kNEvOfInt/2]; } - UShort_t GetPedestal(Int_t channel, Int_t event) const + Float_t GetADC(Int_t channel) const + { return TMath::MaxElement(kNEvOfInt, fADC[channel]); } // maximum value instead of central clock +// { return fADC[channel][kNEvOfInt/2]; } + + Float_t GetPedestal(Int_t channel, Int_t event) const { return fADC[channel][event]; } Bool_t GetIntegratorFlag(Int_t channel, Int_t event) const { return fIsInt[channel][event]; } @@ -54,13 +63,33 @@ class AliVZERORawStream: public TObject { { return fIsBB[channel][event]; } Bool_t GetBGFlag(Int_t channel, Int_t event) const { return fIsBG[channel][event]; } - UInt_t GetTime(Int_t channel) const + Float_t GetTime(Int_t channel) const { return fTime[channel]; } - UInt_t GetWidth(Int_t channel) const + Float_t GetWidth(Int_t channel) const { return fWidth[channel]; } + UShort_t GetTriggerInputs() const + { return fTrigger; } + UShort_t GetTriggerInputsMask() const + { return fTriggerMask; } + +// Getter of Offline Channel number as used in aliroot (defined by aliroot +// numbering convention) from FEE channel (electronic channel number given +// by the V0 electronics readout) - See comment above - + + Int_t GetOfflineChannel(Int_t channel) const + { Int_t fOfflineChannel[64] = {39, 38, 37, 36, 35, 34, 33, 32, + 47, 46, 45, 44, 43, 42, 41, 40, + 55, 54, 53, 52, 51, 50, 49, 48, + 63, 62, 61, 60, 59, 58, 57, 56, + 7, 6, 5, 4, 3, 2, 1, 0, + 15, 14, 13, 12, 11, 10, 9, 8, + 23, 22, 21, 20, 19, 18, 17, 16, + 31, 30, 29, 28, 27, 26, 25, 24}; + return fOfflineChannel[channel]; } + enum EVZERORawDataParams { - kNChannels = 64, // number of electronic channels in V0 + kNChannels = 64, // number of electronic channels in V0 (FEE numbering) kNEvOfInt = 21, // number of events of interest kNScalers = 16, // number of scalers kNBunches = 10 // number of bunches used in Minimum Bias information @@ -87,17 +116,18 @@ class AliVZERORawStream: public TObject { Bool_t fIsBBMB[kNChannels][kNBunches]; // 'Beam-Beam' flag for all channels for the previous 10 MB events Bool_t fIsBGMB[kNChannels][kNBunches]; // 'Beam-Gas' for all channels for the previous 10 MB events - UShort_t fADC[kNChannels][kNEvOfInt]; // ADC counts for all channels and all events of interest + Float_t fADC[kNChannels][kNEvOfInt]; // ADC counts for all channels and all events of interest Bool_t fIsInt[kNChannels][kNEvOfInt]; // 'Integrator' flag for all channels Bool_t fIsBB[kNChannels][kNEvOfInt]; // 'Beam-Beam' flag for all channels Bool_t fIsBG[kNChannels][kNEvOfInt]; // 'Beam-Gas' flag for all channels - Int_t fTime[kNChannels]; // leading time for all channels - from HPTDC - Int_t fWidth[kNChannels]; // pulse width for all channels - from HPTDC + Float_t fTime[kNChannels]; // leading time for all channels - from HPTDC - in nanoseconds + Float_t fWidth[kNChannels]; // pulse width for all channels - from HPTDC - in nanoseconds UShort_t fTrigger; // VZERO trigger inputs UShort_t fTriggerMask; // VZERO trigger inputs mask Int_t fPosition; // current position in the raw-data payload + AliRawReader* fRawReader; // object for reading the raw data