Int_t AliESDanalysis(Int_t nev=1) {
TH2F *tpcHist=
- new TH2F("tpcHist","TPC dE/dX vs momentum",100,0.,3.,100,0.,500.);
+ new TH2F("tpcHist","TPC dE/dX vs momentum",100,0.,4.,100,0.,500.);
tpcHist->SetXTitle("p (GeV/c)"); tpcHist->SetYTitle("dE/dx (Arb. Units)");
tpcHist->SetMarkerStyle(8);
tpcHist->SetMarkerSize(0.3);
- TH1F *piG=new TH1F("piG","",20,0.,3.);
- TH1F *piR=new TH1F("piR","",20,0.,3.);
- TH1F *piF=new TH1F("piF","",20,0.,3.);
- TH1F *piGood=new TH1F("piGood","Combined PID for pions",20,0.,3.);
+ TH1F *piG=new TH1F("piG","",20,0.,4.);
+ TH1F *piR=new TH1F("piR","",20,0.,4.);
+ TH1F *piF=new TH1F("piF","",20,0.,4.);
+ TH1F *piGood=new TH1F("piGood","Combined PID for pions",20,0.,4.);
piGood->SetLineColor(4); piGood->SetXTitle("p (GeV/c)");
- TH1F *piFake=new TH1F("piFake","",20,0.,3.); piFake->SetLineColor(2);
+ TH1F *piFake=new TH1F("piFake","",20,0.,4.); piFake->SetLineColor(2);
- TH1F *kaG=new TH1F("kaG","",20,0.,3.);
- TH1F *kaR=new TH1F("kaR","",20,0.,3.);
- TH1F *kaF=new TH1F("kaF","",20,0.,3.);
- TH1F *kaGood=new TH1F("kaGood","Combined PID for kaons",20,0.,3.);
+ TH1F *kaG=new TH1F("kaG","",20,0.,4.);
+ TH1F *kaR=new TH1F("kaR","",20,0.,4.);
+ TH1F *kaF=new TH1F("kaF","",20,0.,4.);
+ TH1F *kaGood=new TH1F("kaGood","Combined PID for kaons",20,0.,4.);
kaGood->SetLineColor(4); kaGood->SetXTitle("p (GeV/c)");
- TH1F *kaFake=new TH1F("kaFake","",20,0.,3.); kaFake->SetLineColor(2);
+ TH1F *kaFake=new TH1F("kaFake","",20,0.,4.); kaFake->SetLineColor(2);
- TH1F *prG=new TH1F("prG","",20,0.,3.);
- TH1F *prR=new TH1F("prR","",20,0.,3.);
- TH1F *prF=new TH1F("prF","",20,0.,3.);
- TH1F *prGood=new TH1F("prGood","Combined PID for protons",20,0.,3.);
+ TH1F *prG=new TH1F("prG","",20,0.,4.);
+ TH1F *prR=new TH1F("prR","",20,0.,4.);
+ TH1F *prF=new TH1F("prF","",20,0.,4.);
+ TH1F *prGood=new TH1F("prGood","Combined PID for protons",20,0.,4.);
prGood->SetLineColor(4); prGood->SetXTitle("p (GeV/c)");
- TH1F *prFake=new TH1F("prFake","",20,0.,3.); prFake->SetLineColor(2);
+ TH1F *prFake=new TH1F("prFake","",20,0.,4.); prFake->SetLineColor(2);
if (gAlice) {
delete gAlice->GetRunLoader();
);
-
/**** The ITS corner ********************/
AliITSLoader* itsl = (AliITSLoader*)rl->GetLoader("ITSLoader");
rl->GetEvent(i);
+
+//***** Initial path towards the primary vertex
TTree *tpcTree=tpcl->TreeR();
if (!tpcTree) {
cerr<<"Can't get the TPC cluster tree !\n";
tpcTracker.LoadClusters(tpcTree);
rc+=tpcTracker.Clusters2Tracks(event);
-
TTree *itsTree=itsl->TreeR();
if (!itsTree) {
- cerr<<"Can't get the TPC cluster tree !\n";
+ cerr<<"Can't get the ITS cluster tree !\n";
return 4;
}
itsTracker.LoadClusters(itsTree);
rc+=itsTracker.Clusters2Tracks(event);
- rc+=vtxer.Tracks2V0vertices(event); // V0 finding
- rc+=cvtxer.V0sTracks2CascadeVertices(event); // cascade finding
+//***** Back propagation towards the outer barrel detectors
rc+=itsTracker.PropagateBack(event);
- itsTracker.UnloadClusters();
//itsPID.MakePID(event);
rc+=tpcTracker.PropagateBack(event);
- tpcTracker.UnloadClusters();
tpcPID.MakePID(event);
-
TTree *trdTree=trdl->TreeR();
if (!trdTree) {
- cerr<<"Can't get the TPC cluster tree !\n";
+ cerr<<"Can't get the TRD cluster tree !\n";
return 4;
}
trdTracker.LoadClusters(trdTree);
rc+=trdTracker.PropagateBack(event);
- trdTracker.UnloadClusters();
-
/*
for (Int_t iTrack = 0; iTrack < event->GetNumberOfTracks(); iTrack++) {
AliESDtrack* track = event->GetTrack(iTrack);
trdPID->MakePID(track);
}
*/
-
TTree *tofTree=tofl->TreeD();
if (!tofTree) {
cerr<<"Can't get the TOF cluster tree !\n";
tofPID.UnloadClusters();
- //Here is the combined PID
+
+//***** Here is the combined PID
AliESDpid::MakePID(event);
+
+
+//***** Now the final refit at the primary vertex...
+ rc+=trdTracker.RefitInward(event);
+ trdTracker.UnloadClusters();
+
+ rc+=tpcTracker.RefitInward(event);
+ tpcTracker.UnloadClusters();
+
+ rc+=itsTracker.RefitInward(event);
+ itsTracker.UnloadClusters();
+
+
+
+//***** Hyperon reconstruction
+ rc+=vtxer.Tracks2V0vertices(event); // V0 finding
+ rc+=cvtxer.V0sTracks2CascadeVertices(event); // cascade finding
+
+
+
+//***** Some final manipulations with this event
if (rc==0) {
Char_t ename[100];
sprintf(ename,"%d",i);
#include "AliESDtrack.h"
#include "AliKalmanTrack.h"
-// #include "../ITS/AliITStrackV2.h"
ClassImp(AliESDtrack)
fTRDsignal(0),
fTOFchi2(0),
fTOFindex(0),
-fTOFsignal(0)
+fTOFsignal(-1)
{
//
// The default ESD constructor
fTRDr[i]=0;
fTOFr[i]=0;
}
- for (Int_t i=0; i<5; fRp[i++]);
- for (Int_t i=0; i<15; fRc[i++]);
- for (Int_t i=0; i<6; fITSindex[i++]);
- for (Int_t i=0; i<180; fTPCindex[i++]);
+ Int_t i;
+ for (i=0; i<5; i++) fRp[i]=0.;
+ for (i=0; i<15; i++) fRc[i]=0.;
+ for (i=0; i<6; i++) fITSindex[i]=0;
+ for (i=0; i<180; i++) fTPCindex[i]=0;
}
//_______________________________________________________________________
case kTRDin: case kTRDout: case kTRDrefit:
fTRDncls=t->GetNumberOfClusters();
fTRDchi2=t->GetChi2();
+ for (Int_t i=0;i<fTRDncls;i++) fTRDindex[i]=t->GetClusterIndex(i);
fTRDsignal=t->GetPIDsignal();
break;
default:
if (flags == kITSin)
{
- // AliITStrackV2* itstrack = dynamic_cast<AliITStrackV2*>(t);
AliKalmanTrack *itstrack = t;
if (itstrack)
{
return kTRUE;
}
-//_______________________________________________________________________
-void AliESDtrack::GetExternalParametersAt(Double_t x, Double_t p[5]) const {
- //---------------------------------------------------------------------
- // This function returns external representation of the track parameters
- // at the plane x
- //---------------------------------------------------------------------
- Double_t dx=x-fRx;
- Double_t c=fRp[4]/AliKalmanTrack::GetConvConst();
- Double_t f1=fRp[2], f2=f1 + c*dx;
- Double_t r1=sqrt(1.- f1*f1), r2=sqrt(1.- f2*f2);
-
- p[0]=fRp[0]+dx*(f1+f2)/(r1+r2);
- p[1]=fRp[1]+dx*(f1+f2)/(f1*r2 + f2*r1)*fRp[3];
- p[2]=fRp[2]+dx*c;
- p[3]=fRp[3];
- p[4]=fRp[4];
-}
-
//_______________________________________________________________________
void AliESDtrack::GetExternalParameters(Double_t &x, Double_t p[5]) const {
//---------------------------------------------------------------------
//---------------------------------------------------------------------
// This function returns the global track position
//---------------------------------------------------------------------
- Double_t phi=TMath::ASin(fRp[2]) + fRalpha;
+ Double_t phi=TMath::ATan2(fRp[0],fRx) + fRalpha;
Double_t r=TMath::Sqrt(fRx*fRx + fRp[0]*fRp[0]);
xyz[0]=r*TMath::Cos(phi); xyz[1]=r*TMath::Sin(phi); xyz[2]=fRp[1];
}
for (Int_t i=0; i<kSPECIES; i++) p[i]=fTPCr[i];
}
+//_______________________________________________________________________
+Int_t AliESDtrack::GetTRDclusters(UInt_t *idx) const {
+ //---------------------------------------------------------------------
+ // This function returns indices of the assgined TRD clusters
+ //---------------------------------------------------------------------
+ for (Int_t i=0; i<90; i++) idx[i]=fTRDindex[i]; // MI I prefer some constant
+ return fTRDncls;
+}
+
//_______________________________________________________________________
void AliESDtrack::SetTRDpid(const Double_t *p) {
// Sets values for the probability of each particle type (in TRD)
ULong_t GetStatus() const {return fFlags;}
Int_t GetLabel() const {return fLabel;}
Double_t GetAlpha() const {return fRalpha;}
- void GetExternalParametersAt(Double_t x, Double_t p[5]) const;
void GetExternalParameters(Double_t &x, Double_t p[5]) const;
void GetExternalCovariance(Double_t cov[15]) const;
Double_t GetIntegratedLength() const {return fTrackLength;}
void SetTRDpid(const Double_t *p);
void GetTRDpid(Double_t *p) const;
Float_t GetTRDsignal() const {return fTRDsignal;}
+ Int_t GetTRDclusters(UInt_t *idx) const;
void SetTRDpid(Int_t iSpecies, Float_t p);
Float_t GetTRDpid(Int_t iSpecies) const;
// TRD related track information
Float_t fTRDchi2; // chi2 in the TRD
Int_t fTRDncls; // number of clusters assigned in the TRD
+ UInt_t fTRDindex[90]; //! indices of the assigned TRD clusters
Float_t fTRDsignal; // detector's PID signal
Float_t fTRDr[kSPECIES]; //! "detector response probabilities" (for the PID)
// TOF related track information
Float_t fTOFchi2; // chi2 in the TOF
- UInt_t fTOFindex; //! index of the assigned TOF cluster
+ UInt_t fTOFindex; // index of the assigned TOF cluster
Float_t fTOFsignal; // detector's PID signal
Float_t fTOFr[kSPECIES]; // "detector response probabilities" (for the PID)