class AliTRDtrackletWord;
class AliTRDcluster : public AliCluster {
-public:
+ friend class AliHLTTRDCluster;
+ friend class AliTRDtrackletOflHelper;
+public:
enum ETRDclusterStatus {
kInChamber = BIT(16) // Out of fiducial volume of chamber (signal tails)
,kFivePad = BIT(17) // Deconvoluted clusters
,kLUT = BIT(18)
,kGAUS = BIT(19)
,kCOG = BIT(20)
+ ,kXcorr = BIT(21) // steer efficient vd corrections
+ ,kRawSignals= BIT(22) // toggle raw digits storage
};
enum ETRDclusterMask {
kMaskedLeft = 0
AliTRDcluster();
AliTRDcluster(Int_t det, UChar_t col, UChar_t row, UChar_t time, const Short_t *sig, UShort_t volid);
- AliTRDcluster(Int_t det, Float_t q, Float_t *pos, Float_t *sig
- , Int_t *tracks, Char_t npads, Short_t * const signals
+ AliTRDcluster(Int_t det, Float_t q, const Float_t *pos, const Float_t *sig
+ , const Int_t *tracks, Char_t npads, Short_t * const signals
, UChar_t col, UChar_t row, UChar_t time
, Char_t timebin, Float_t center, UShort_t volid);
AliTRDcluster(const AliTRDtrackletWord *const tracklet, Int_t det, UShort_t volid);
Bool_t IsUsed() const { return IsClusterUsed(); }
Bool_t IsFivePad() const { return TestBit(kFivePad); }
inline Bool_t IsRPhiMethod(ETRDclusterStatus m) const;
+ inline Bool_t IsMCcluster() const;
+ Bool_t HasXcorr() const { return TestBit(kXcorr); }
+ Bool_t HasRawSignals() const { return TestBit(kRawSignals); }
UChar_t GetPadMaskedPosition() const { return fClusterMasking & 7; }
UChar_t GetPadMaskedStatus() const { return fClusterMasking >> 3; }
Int_t GetDetector() const { return fDetector; }
Int_t GetLocalTimeBin() const { return fLocalTimeBin; }
Float_t GetQ() const { return fQ; }
+ Short_t GetRawQ() const { return TestBit(kRawSignals)?(Short_t)GetSumS():0;}
Int_t GetNPads() const { return fNPads; }
Float_t GetCenter() const { return fCenter; }
Int_t GetPadCol() const { return fPadCol; }
void SetPadMaskedPosition(UChar_t position);
void SetPadMaskedStatus(UChar_t status);
void SetSigmaY2(Float_t s2, Float_t dt, Float_t exb, Float_t x0, Float_t z=-1., Float_t tgp=0.);
+ void SetSignals(Short_t sig[7], Bool_t raw=kTRUE){ memcpy(fSignals, sig, 7*sizeof(Short_t)); SetBit(kRawSignals, raw);}
inline void SetRPhiMethod(ETRDclusterStatus m);
+ void SetXcorr(Bool_t xc = kTRUE) { SetBit(kXcorr,xc); }
void Use(Int_t u = 1) { SetBit(AliCluster::kUsed, u ? kTRUE : kFALSE); }
UChar_t fNPads; // Number of pads in cluster
UChar_t fClusterMasking; // Bit field containing cluster status information;
Short_t fDetector; // TRD detector number
- Short_t fSignals[7]; // Signals in the cluster
- Float_t fQ; // Amplitude
+ Short_t fSignals[7]; // Raw signals if HasRawSignals() returns true. Otherwise calibrated.
+ Float_t fQ; // Calibrated cluster charge
Float_t fCenter; // Center of the cluster relative to the pad
private:
};
+//________________________________________________
+inline Bool_t AliTRDcluster::IsMCcluster() const
+{
+ if( GetLabel(0) == fPadRow &&
+ GetLabel(1) == fPadCol &&
+ GetLabel(2) == fPadTime) return kFALSE;
+ return kTRUE;
+}
+
//________________________________________________
inline Bool_t AliTRDcluster::IsRPhiMethod(ETRDclusterStatus m) const
{