AliTRDtrackletMCM::AliTRDtrackletMCM(UInt_t trackletWord) :
AliTRDtrackletBase(),
+ fGeo(0x0),
fHCId(-1),
- fTrackletWord(trackletWord),
- fMCM(-1),
- fROB(-1)
-{
+ fTrackletWord(trackletWord),
+ fMCM(-1),
+ fROB(-1),
+ fQ0(0),
+ fQ1(0),
+ fNHits(0),
+ fNHits0(0),
+ fNHits1(0),
+ fSlope(0.),
+ fOffset(0.),
+ fError(0.),
+ fNClusters(0),
+ fResiduals(0x0),
+ fClsCharges(0x0)
+{
+ // constructor
+ fGeo = new AliTRDgeometry();
+ fLabel[0] = -1;
+ fLabel[1] = -1;
+ fLabel[2] = -1;
}
AliTRDtrackletMCM::AliTRDtrackletMCM(UInt_t trackletWord, Int_t hcid) :
AliTRDtrackletBase(),
+ fGeo(0x0),
fHCId(hcid),
- fTrackletWord(trackletWord),
+ fTrackletWord(trackletWord),
fMCM(-1),
- fROB(-1)
-{
+ fROB(-1),
+ fQ0(0),
+ fQ1(0),
+ fNHits(0),
+ fNHits0(0),
+ fNHits1(0),
+ fSlope(0.),
+ fOffset(0.),
+ fError(0.),
+ fNClusters(0),
+ fResiduals(0x0),
+ fClsCharges(0x0)
+{
+ // constructor
+
+ fGeo = new AliTRDgeometry();
+ fLabel[0] = -1;
+ fLabel[1] = -1;
+ fLabel[2] = -1;
+}
+AliTRDtrackletMCM::AliTRDtrackletMCM(UInt_t trackletWord, Int_t hcid, Int_t rob, Int_t mcm) :
+ AliTRDtrackletBase(),
+ fGeo(0x0),
+ fHCId(hcid),
+ fTrackletWord(trackletWord),
+ fMCM(mcm),
+ fROB(rob),
+ fQ0(0),
+ fQ1(0),
+ fNHits(0),
+ fNHits0(0),
+ fNHits1(0),
+ fSlope(0.),
+ fOffset(0.),
+ fError(0.),
+ fNClusters(0),
+ fResiduals(0x0),
+ fClsCharges(0x0)
+{
+ // constructor
+
+ fGeo = new AliTRDgeometry();
+ fLabel[0] = -1;
+ fLabel[1] = -1;
+ fLabel[2] = -1;
}
AliTRDtrackletMCM::AliTRDtrackletMCM(const AliTRDtrackletMCM &rhs) :
AliTRDtrackletBase(rhs),
+ fGeo(0x0),
fHCId(rhs.fHCId),
fTrackletWord(rhs.fTrackletWord),
fMCM(rhs.fMCM),
- fROB(rhs.fROB)
+ fROB(rhs.fROB),
+ fQ0(rhs.fQ0),
+ fQ1(rhs.fQ1),
+ fNHits(rhs.fNHits),
+ fNHits0(rhs.fNHits0),
+ fNHits1(rhs.fNHits1),
+ fSlope(rhs.fSlope),
+ fOffset(rhs.fOffset),
+ fError(rhs.fError),
+ fNClusters(rhs.fNClusters),
+ fResiduals(0x0),
+ fClsCharges(0x0)
{
+ // copy constructor
+ fGeo = new AliTRDgeometry();
+ fResiduals = new Float_t[fNClusters];
+ fClsCharges = new Float_t[fNClusters];
+ for (Int_t iCls = 0; iCls < fNClusters; iCls++) {
+ fResiduals[iCls] = rhs.fResiduals[iCls];
+ fClsCharges[iCls] = rhs.fClsCharges[iCls];
+ }
+ fLabel[0] = rhs.fLabel[0];
+ fLabel[1] = rhs.fLabel[1];
+ fLabel[2] = rhs.fLabel[2];
}
-AliTRDtrackletMCM::~AliTRDtrackletMCM()
+AliTRDtrackletMCM::~AliTRDtrackletMCM()
{
+ // destructor
+ delete [] fResiduals;
+ delete [] fClsCharges;
+ delete fGeo;
}
Int_t AliTRDtrackletMCM::GetYbin() const {
}
}
-Int_t AliTRDtrackletMCM::GetdY() const
+Int_t AliTRDtrackletMCM::GetdY() const
{
// returns (signed) value of the deflection length
if (fTrackletWord & (1 << 19)) {
return ((fTrackletWord >> 13) & 0x7f);
}
}
+
+void AliTRDtrackletMCM::SetLabel(Int_t label[])
+{
+ // set the labels (up to 3)
+
+ fLabel[0] = label[0];
+ fLabel[1] = label[1];
+ fLabel[2] = label[2];
+}
+
+void AliTRDtrackletMCM::SetClusters(Float_t *res, Float_t *q, Int_t n)
+{
+ fNClusters = n;
+ delete [] fResiduals;
+ delete [] fClsCharges;
+
+ fResiduals = new Float_t[fNClusters];
+ fClsCharges = new Float_t[fNClusters];
+
+ for (Int_t iCls = 0; iCls < fNClusters; iCls++) {
+ fResiduals[iCls] = res[iCls];
+ fClsCharges[iCls] = q[iCls];
+ }
+}