/*
$Log$
+Revision 1.1 2002/01/21 17:14:21 kowal2
+New track hits using root containers.
+
*/
///////////////////////////////////////////////////////////////////////////////
// //
-struct AliTPCCurrentHitV2 {
- AliTPChit fHit;
- UInt_t fParamIndex;// - current param pointer
- UInt_t fStackIndex; // - current hit stack index
- Double_t fR; //current Radius
- Bool_t fStatus; //current status
-};
-
-
struct AliTPCTempHitInfoV2 {
enum { fkStackSize = 10000};
AliTPCTempHitInfoV2();
fCurrentHit = new AliTPCCurrentHitV2;
fVolumes =0;
fNVolumes =0;
+ fHit =0;
fgCounter1++;
fgCounter2++;
fVolumes =0;
fNVolumes=0;
}
+ if (fHit){
+ delete fHit;
+ fHit=0;
+ }
fgCounter1--;
}
}
if (fTempInfo){
delete fTempInfo;
+ delete fHit;
+ fHit =0;
fTempInfo =0;
}
if (fVolumes){
//set Current hit for the first hit
//
AliTrackHitsParamV2 *param = (AliTrackHitsParamV2 *)fArray->At(0);
+ if (!fHit) fHit = new AliTPChit;
if (!(param) ) {
fCurrentHit->fStatus = kFALSE;
return kFALSE;
fCurrentHit->fParamIndex = 0;
fCurrentHit->fStackIndex = 0;
//
- fCurrentHit->fHit.fSector = param->fVolumeID;
- fCurrentHit->fHit.SetTrack(param->fTrackID);
- fCurrentHit->fHit.SetX(param->fR*TMath::Cos(param->fFi));
- fCurrentHit->fHit.SetY(param->fR*TMath::Sin(param->fFi));
- fCurrentHit->fHit.SetZ(param->fZ);
- fCurrentHit->fHit.fQ = param->fCharge[0];
+ //
+ ((AliTPChit*)fHit)->fSector = param->fVolumeID;
+ ((AliTPChit*)fHit)->SetTrack(param->fTrackID);
+ ((AliTPChit*)fHit)->SetX(param->fR*TMath::Cos(param->fFi));
+ ((AliTPChit*)fHit)->SetY(param->fR*TMath::Sin(param->fFi));
+ ((AliTPChit*)fHit)->SetZ(param->fZ);
+ ((AliTPChit*)fHit)->fQ = param->fCharge[0];
+ /*
+ fCurrentHit->fHit.fSector = param->fVolumeID;
+ fCurrentHit->fHit.SetTrack(param->fTrackID);
+ fCurrentHit->fHit.SetX(param->fR*TMath::Cos(param->fFi));
+ fCurrentHit->fHit.SetY(param->fR*TMath::Sin(param->fFi));
+ fCurrentHit->fHit.SetZ(param->fZ);
+ fCurrentHit->fHit.fQ = param->fCharge[0];
+ */
fCurrentHit->fR = param->fR;
return fCurrentHit->fStatus = kTRUE;
Double_t dR = fCurrentHit->fR - param->fR;
Double_t fi = param->fFi + (param->fAn*dR+param->fAd*dR*dR);
Double_t z = param->fZ + (param->fTheta*dR+param->fThetaD*dR*dR);
-
+ /*
fCurrentHit->fHit.fQ = param->fCharge[fCurrentHit->fStackIndex];
fCurrentHit->fHit.SetX(fCurrentHit->fR*TMath::Cos(fi));
fCurrentHit->fHit.SetY(fCurrentHit->fR*TMath::Sin(fi));
fCurrentHit->fHit.SetZ(z);
fCurrentHit->fHit.fSector = param->fVolumeID;
fCurrentHit->fHit.SetTrack(param->fTrackID);
+ */
+ ((AliTPChit*)fHit)->fQ = param->fCharge[fCurrentHit->fStackIndex];
+ ((AliTPChit*)fHit)->SetX(fCurrentHit->fR*TMath::Cos(fi));
+ ((AliTPChit*)fHit)->SetY(fCurrentHit->fR*TMath::Sin(fi));
+ ((AliTPChit*)fHit)->SetZ(z);
+ ((AliTPChit*)fHit)->fSector = param->fVolumeID;
+ ((AliTPChit*)fHit)->SetTrack(param->fTrackID);
+
return kTRUE;
}
-AliTPChit * AliTPCTrackHitsV2::GetHit()
+AliHit * AliTPCTrackHitsV2::GetHit()
{
//
- return (fCurrentHit->fStatus)? &fCurrentHit->fHit:0;
+ return (fCurrentHit->fStatus)? fHit:0;
//return &fCurrentHit->fHit;
}
class AliTPChit;
class AliTPCTempHitInfoV2;
class AliTPCCurrentHitV2;
-
+class AliHit;
class AliTrackHitsParamV2 : public TObject {
public:
Bool_t First(); //set current hit to first hit
Bool_t Next(); //set current hit to next
- AliTPChit * GetHit();
+ AliHit * GetHit();
AliTrackHitsParamV2 * GetParam();
TClonesArray * GetArray(){return fArray;}
Int_t * fVolumes; //[fNVolumes] list of volumes
AliTPCTempHitInfoV2 * fTempInfo; //!information about track
AliTPCCurrentHitV2 * fCurrentHit; //!information about current hit
+ AliHit * fHit; //! current hit information
static const Double_t fgkPrecision; //precision
static const Double_t fgkPrecision2; //precision
static Int_t fgCounter1;
ClassDef(AliTPCTrackHitsV2,1)
};
+struct AliTPCCurrentHitV2 {
+ UInt_t fParamIndex;// - current param pointer
+ UInt_t fStackIndex; // - current hit stack index
+ Double_t fR; //current Radius
+ Bool_t fStatus; //current status
+};
+
+
#endif //ALITPCTRACKHITSV2_H