///////////////////////////////////////////////////////////////////////////////
//
+#include <TClonesArray.h>
+#include <TMath.h>
+
#include "AliTPCTrackHitsV2.h"
-#include "TClonesArray.h"
#include "AliTPC.h"
AliTPCTempHitInfoV2::AliTPCTempHitInfoV2()
+ :fSumDr(0.),
+ fSumDr2(0.),
+ fSumDr3(0.),
+ fSumDr4(0.),
+ fSumDFi(0.),
+ fSumDFiDr(0.),
+ fSumDFiDr2(0.),
+ fSumDZ(0.),
+ fSumDZDr(0.),
+ fSumDZDr2(0.),
+ fOldR(0.),
+ fStackIndex(0),
+ fParamIndex(0),
+ fParam(0)
{
//
// Standard constructor
fStackIndex = 0;
// fInfoIndex = 0;
fParamIndex = 0;
+ for(Int_t i=0;i<3*kStackSize;i++) fPositionStack[i]=0.;
+ for(Int_t i=0;i<kStackSize;i++){
+ fQStack[i]=0;
+ fTimeStack[i]=0.;
+ }
}
}
-AliTrackHitsParamV2::AliTrackHitsParamV2()
+AliTrackHitsParamV2::AliTrackHitsParamV2():TObject(),
+ fTrackID(0),
+ fVolumeID(0),
+ fR(0.),
+ fZ(0.),
+ fFi(0.),
+ fAn(0.),
+ fAd(0.),
+ fTheta(0.),
+ fThetaD(0.),
+ fNHits(0),
+ fHitDistance(0),
+ fCharge(0),
+ fTime(0)
{
//
// default constructor
//
fgCounter1++;
fgCounter2++;
- fHitDistance=0;
- fCharge=0;
- fTime=0;
- fNHits=0;
}
AliTrackHitsParamV2::~AliTrackHitsParamV2()
}
-AliTPCTrackHitsV2::AliTPCTrackHitsV2()
+AliTPCTrackHitsV2::AliTPCTrackHitsV2():TObject(),
+ fArray(0),
+ fSize(0),
+ fPrecision(0.),
+ fStep(0.),
+ fMaxDistance(0),
+ fNVolumes(0),
+ fVolumes(0),
+ fTempInfo(0),
+ fCurrentHit(0),
+ fHit(0)
{
//
//default constructor
fPrecision=kHitPrecision; //precision in cm
fStep = kStep; //step size
fMaxDistance = kMaxDistance; //maximum distance
- fTempInfo =0;
- fSize=0;
+
//fTrackHitsInfo = new AliObjectArray("AliTrackHitsInfo");
//fTrackHitsParam = new AliObjectArray("AliTrackHitsParamV2");
//fHitsPosAndQ = new TArrayOfArrayVStack("AliHitInfo");
fArray = new TClonesArray("AliTrackHitsParamV2");
fCurrentHit = new AliTPCCurrentHitV2;
- fVolumes =0;
- fNVolumes =0;
- fHit =0;
fgCounter1++;
fgCounter2++;
dr = dl/ratio;
oldr+=dr;
//calculate precission
- AliTrackHitsParamV2 ¶m = *(fTempInfo->GetParam());
+ AliTrackHitsParamV2 ¶ml = *(fTempInfo->GetParam());
//real deltas
- Double_t dr1= position[0]-param.GetR();
- Double_t dz = position[1]-param.GetZ();
- Double_t dfi = position[2]-param.GetFi();
+ Double_t dr1= position[0]-paraml.GetR();
+ Double_t dz = position[1]-paraml.GetZ();
+ Double_t dfi = position[2]-paraml.GetFi();
//extrapolated deltas
- Double_t dr2 = oldr-param.GetR();
+ Double_t dr2 = oldr-paraml.GetR();
Double_t ddr = dr2-dr1;
- Double_t ddz = dr2*param.GetTheta()+dr2*dr2*param.GetThetaD()-dz;
- Double_t ddfi= dr2*param.GetAn()+dr2*dr2*param.GetAd()-dfi;
+ Double_t ddz = dr2*paraml.GetTheta()+dr2*dr2*paraml.GetThetaD()-dz;
+ Double_t ddfi= dr2*paraml.GetAn()+dr2*dr2*paraml.GetAd()-dfi;
dd = TMath::Sqrt(ddz*ddz+oldr*oldr*ddfi*ddfi+ddr*ddr);
if ( (dd>fPrecision) ){
//if ( (dd<0) ){
if (i==0){
- param.SetAn(0);
- param.SetAd(0);
- param.SetTheta(0);
- param.SetThetaD(0);
- Double_t ddz = dr2*param.GetTheta()+dr2*dr2*param.GetThetaD()-dz;
- Double_t ddfi= dr2*param.GetAn()+dr2*dr2*param.GetAd()-dfi;
+ paraml.SetAn(0);
+ paraml.SetAd(0);
+ paraml.SetTheta(0);
+ paraml.SetThetaD(0);
+ Double_t ddz1 = dr2*paraml.GetTheta()+dr2*dr2*paraml.GetThetaD()-dz;
+ Double_t ddfi1= dr2*paraml.GetAn()+dr2*dr2*paraml.GetAd()-dfi;
dl = 0;
- dd = TMath::Sqrt(ddz*ddz+oldr*oldr*ddfi*ddfi+ddr*ddr);
+ dd = TMath::Sqrt(ddz1*ddz1+oldr*oldr*ddfi1*ddfi1+ddr*ddr);
}
else
break;
}
- param.HitDistance(i)= Short_t(TMath::Nint(dl/fStep));
- param.Charge(i)= Short_t(fTempInfo->GetQStack(i));
- param.Time(i)= Short_t(fTempInfo->GetTimeStack(i)/AliTPCTrackHitsV2::fgkTimePrecision);
+ paraml.HitDistance(i)= Short_t(TMath::Nint(dl/fStep));
+ paraml.Charge(i)= Short_t(fTempInfo->GetQStack(i));
+ paraml.Time(i)= Short_t(fTempInfo->GetTimeStack(i)/AliTPCTrackHitsV2::fgkTimePrecision);
}
if (i<=fTempInfo->GetStackIndex()){ //if previous iteration not succesfull