#include <Rtypes.h>
#include "TClonesArray.h"
+#include "TObjArray.h"
#include "TTree.h"
#include "TTreeStream.h"
fDy(0),
fDz(0),
fTracks(new TClonesArray("AliTOFtrack")),
- fSeeds(new TClonesArray("AliESDtrack")),
+ fSeeds(new TObjArray(100)),
fDebugStreamer(0x0)
{
//AliTOFtrackerMI main Ctor
+ for (Int_t ii=0; ii<kMaxCluster; ii++) fClusters[ii]=0x0;
+
fDy=AliTOFGeometry::XPad();
fDz=AliTOFGeometry::ZPad();
fDebugStreamer = new TTreeSRedirector("TOFdebug.root");
delete fSeeds;
fSeeds=0x0;
}
+
+ for (Int_t ii=0; ii<kMaxCluster; ii++)
+ if (fClusters[ii]) fClusters[ii]->Delete();
+
}
//_____________________________________________________________________________
void AliTOFtrackerMI::GetPidSettings(AliESDpid *esdPID) {
Int_t ntrk=event->GetNumberOfTracks();
fNseeds = ntrk;
- TClonesArray &aESDTrack = *fSeeds;
-
//Load ESD tracks into a local Array of ESD Seeds
-
- for (Int_t i=0; i<fNseeds; i++) {
- AliESDtrack *t=event->GetTrack(i);
- new(aESDTrack[i]) AliESDtrack(*t);
- }
+ for (Int_t i=0; i<fNseeds; i++)
+ fSeeds->AddLast(event->GetTrack(i));
//Prepare ESD tracks candidates for TOF Matching
CollectESD();
for (Int_t i=0; i<ntrk; i++) {
AliESDtrack *t=event->GetTrack(i);
- AliESDtrack *seed =(AliESDtrack*)fSeeds->UncheckedAt(i);
+ AliESDtrack *seed =(AliESDtrack*)fSeeds->At(i);
if ( (seed->GetStatus()&AliESDtrack::kTOFin)!=0 ) {
t->SetStatus(AliESDtrack::kTOFin);
//Make TOF PID
fSeeds->Clear();
- fTracks->Clear();
+ fTracks->Delete();
return 0;
}
Int_t c1=0;
for (Int_t i=0; i<fNseeds; i++) {
- AliESDtrack *t =(AliESDtrack*)fSeeds->UncheckedAt(i);
+ AliESDtrack *t =(AliESDtrack*)fSeeds->At(i);
if ((t->GetStatus()&AliESDtrack::kTPCout)==0)continue;
AliTOFtrack *track = new AliTOFtrack(*t); // New
void AliTOFtrackerMI::MatchTracksMI(Bool_t mLastStep){
//Match ESD tracks to clusters in TOF
- const Float_t kTofOffset = 26; // time offset
+ const Float_t kTofOffset = 0; // time offset
const Float_t kMinQuality = -6.; // minimal quality
const Float_t kMaxQualityD = 1.; // max delta quality if cluster used
const Float_t kForbiddenR = 0.1; // minimal PID according TPC
- static const Double_t kMasses[]={
+ static const Double_t kMasses[AliPID::kSPECIES+1]={
0.000511, 0.105658, 0.139570, 0.493677, 0.938272, 1.875613
};
Int_t nSteps=(Int_t)(fTOFHeigth/0.1);
- //AliTOFcalib *calib = new AliTOFcalib(); // AdC
-
//PH Arrays (moved outside of the loop)
Float_t * trackPos[4];
for (Int_t ii=0; ii<4; ii++) trackPos[ii] = new Float_t[nSteps];
Float_t mintimedist[kNclusterMax];
Float_t likelihood[kNclusterMax];
Float_t length[kNclusterMax];
- Double_t tpcpid[5];
+ Double_t tpcpid[AliPID::kSPECIES+1]; // overrun_static - coverity warning
dist3D[0][0]=1;
for (Int_t i=0; i<fNseedsTOF; i++) {
AliTOFtrack *track =(AliTOFtrack*)fTracks->UncheckedAt(i);
- AliESDtrack *t =(AliESDtrack*)fSeeds->UncheckedAt(track->GetSeedIndex());
+ AliESDtrack *t =(AliESDtrack*)fSeeds->At(track->GetSeedIndex());
Bool_t hasTime = ( (t->GetStatus()& AliESDtrack::kTIME)>0) ? kTRUE:kFALSE; // did we integrate time
Float_t trdquality = t->GetTRDQuality();
//
//
t->GetTPCpid(tpcpid);
Double_t sumpid=0;
- for (Int_t ipid=0;ipid<5;ipid++){
+ for (Int_t ipid=0;ipid<AliPID::kSPECIES;ipid++){
sumpid+=tpcpid[ipid];
}
- for (Int_t ipid=0;ipid<5;ipid++){
+ for (Int_t ipid=0;ipid<AliPID::kSPECIES;ipid++){
if (sumpid>0) tpcpid[ipid]/=sumpid;
else{
tpcpid[ipid]=0.2;
Double_t tof2=AliTOFGeometry::TdcBinWidth()*cluster->GetTDC()+kTofOffset; // in ps
// Float_t tgamma = TMath::Sqrt(cluster->GetR()*cluster->GetR()+cluster->GetZ()*cluster->GetZ())/0.03; //time for "primary" gamma
//if (trackTOFin->GetPt()<0.7 && TMath::Abs(tgamma-tof2)<350) continue; // gamma conversion candidate - TEMPORARY
- for(Int_t j=0;j<=5;j++){
+ for(Int_t j=0;j<AliPID::kSPECIES+1;j++){
+
Double_t mass=kMasses[j];
times[nfound][j]+=distances[4]/3e-2*TMath::Sqrt(mom*mom+mass*mass)/mom; // add time distance
if ( TMath::Abs(times[nfound][j]-tof2)<mintimedist[nfound] && tpcpid[j]>kForbiddenR){
Float_t normwidth, normd, p0,p1;
- Float_t sigmay = TMath::Max(TMath::Sqrt(cov[0]+kMeanSigmaY*kMeanSigmaY),kMaxSigmaY);
- Float_t sigmaz = TMath::Max(TMath::Sqrt(cov[2]+kMeanSigmaZ*kMeanSigmaZ),kMaxSigmaZ);
+ Float_t sigmay = TMath::Max(TMath::Sqrt(TMath::Abs(cov[0])+kMeanSigmaY*kMeanSigmaY),kMaxSigmaY);
+ Float_t sigmaz = TMath::Max(TMath::Sqrt(TMath::Abs(cov[2])+kMeanSigmaZ*kMeanSigmaZ),kMaxSigmaZ);
py=0;
pz=0;