31 #include "AliTPCseed.h" 35 #include "AliTPCCosmicUtils.h" 39 fStreamer(0x0), fDebugLevel(dlev)
40 , fSeedUp(0x0), fSeedLow(0x0), fTrackparUp(0x0), fTrackparLow(0x0)
43 , fFitNcls(-999), fMissNcls(-999), fPreChi2(-999)
75 Bool_t kswap = kFALSE;
100 Bool_t kswap = kFALSE;
105 AliTPCseed * tmpseed = seed0;
126 const TVector3 p0(0,0,0);
130 const TVector3 dd = va.Cross(vb);
132 return dd.Mag()/vb.Mag();
140 return asin(TMath::Min(fsp[0], fsp[1])) * TMath::RadToDeg();
213 (*fStreamer)<<
"TrackProp"<<
223 "momlow="<< momlow <<
252 TVector3 singlemin[2], singlemax[2];
253 for(Int_t ii=0; ii<2; ii++){
254 singlemin[ii].SetXYZ( 1e10, 1e10, 1e10);
255 singlemax[ii].SetXYZ(-1e10, -1e10, -1e10);
258 for(Int_t itrk=0; itrk<2; itrk++){
259 for(Int_t irow=0; irow<AliTPCCosmicUtils::fgkNRow; irow++){
264 Float_t xyz[3]={-999,-999,-999};
266 if(xyz[1]<singlemin[itrk].Y()){
267 singlemin[itrk].SetXYZ(xyz[0], xyz[1], xyz[2]);
269 if(xyz[1]>singlemax[itrk].Y()){
270 singlemax[itrk].SetXYZ(xyz[0], xyz[1], xyz[2]);
278 Bool_t kpass = kFALSE;
282 TVector3 combinedmin, combinedmax;
283 if(singlemin[0].Y()> singlemax[1].Y()){
292 combinedmax = singlemax[0];
293 combinedmin = singlemin[1];
295 else if(singlemin[1].Y()> singlemax[0].Y()){
301 AliTPCseed *tmp=*(seeds[0]);
302 *(seeds[0])=*(seeds[1]);
307 combinedmax = singlemax[1];
308 combinedmin = singlemin[0];
313 const TVector3 comdelta = combinedmax-combinedmin;
328 if(
fSeedUp->GetNumberOfClusters()<AliTPCCosmicUtils::fgkNclsMin ||
fSeedLow->GetNumberOfClusters()<AliTPCCosmicUtils::fgkNclsMin ){
340 fSeedUp = AliTPCCosmicUtils::GetTPCseed(trk0);
341 fSeedLow = AliTPCCosmicUtils::GetTPCseed(trk1);
static const Double_t fgkMaxChi2
max. chi2/ncls
printf("Chi2/npoints = %f\n", TMath::Sqrt(chi2/npoints))
static const Double_t fgkCutLeverArm
minimum lever arm 350 ~ 250 * sqrt(2)
Bool_t CombineESDtracks(AliESDtrack *&trk0, AliESDtrack *&trk1)
virtual Bool_t GetGlobalXYZ(Float_t xyz[3]) const
Int_t fDebugLevel
debug level
TTreeSRedirector * fStreamer
! debug streamer
AliTPCseed * fSeedUp
TPC seed of upper track.
Bool_t GetTPCseeds(const AliESDtrack *trk0, const AliESDtrack *trk1)
TVector3 fInnerClusterUp
xyz of the inner most TPC trackpoint of the Upper track
Bool_t CombineTPCseeds(AliTPCseed *&seed0, AliTPCseed *&seed1)
Double_t ImpactParameter() const
Implementation of the TPC cluser.
AliExternalTrackParam * fTrackparLow
track param of lower track
Bool_t AnaSeeds(Bool_t &kswap)
Double_t fPreChi2
Predicted chi2/nfit over the two propagation.
~AliTPCCombinedTrackfit()
Double_t fLeverArm
transverse difference between upper most and lower most clusters
AliTPCCombinedTrackfit(const Int_t dlev=0, const TString tag="test")
Int_t fStatus
status for CombineESDtracks/CombineTPCseeds: 0-successful, otherwise fail
Int_t fFitNcls
number of TPC clusters successful in propagation (mean of the two propagation: upwards and downwards)...
void IniCombineESDtracks()
AliTPCseed * fSeedLow
TPC seed of lower track.
AliExternalTrackParam * fTrackparUp
track param of upper track
Int_t fMissNcls
number of TPC clusters fail in propagation (sum of the two propagation)
TVector3 fInnerClusterLow
xyz of the inner most TPC trackpoint of the Lower track