Adding RICH and updating PHOS part (Yu.Belikov)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 12 Mar 2004 13:51:15 +0000 (13:51 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 12 Mar 2004 13:51:15 +0000 (13:51 +0000)
STEER/AliESD.cxx
STEER/AliESD.h
STEER/AliESDpid.cxx
STEER/AliESDtrack.cxx
STEER/AliESDtrack.h

index d6ec88d..4b5bb2e 100644 (file)
@@ -33,6 +33,7 @@ AliESD::AliESD():
   fTrigger(0),
   fRecoVersion(0),
   fMagneticField(0),
+  fT0zVertex(0),
   fPrimaryVertex(),
   fTracks("AliESDtrack",15000),
   fCaloTracks("AliESDCaloTrack",500),
index ea3e8ae..156da06 100644 (file)
@@ -87,6 +87,9 @@ public:
   Int_t GetNumberOfMuonTracks() const {return fMuonTracks.GetEntriesFast();}
   Int_t GetNumberOfV0s()      const {return fV0s.GetEntriesFast();}
   Int_t GetNumberOfCascades() const {return fCascades.GetEntriesFast();}
+  
+  Float_t GetT0zVertex() const {return fT0zVertex;}
+  void SetT0zVertex(Float_t z) {fT0zVertex=z;}
 
   void  Print(Option_t *option="") const;
    
@@ -99,7 +102,8 @@ protected:
   Int_t        fRecoVersion;     // Version of reconstruction 
   Float_t      fMagneticField;   // Solenoid Magnetic Field in kG : for compatibility with AliMagF
 
-  AliESDVertex  fPrimaryVertex;  // Primary vertex
+  Float_t      fT0zVertex;       // vertex z position estimated by the START
+  AliESDVertex  fPrimaryVertex;  // Primary vertex estimated by the ITS
 
   TClonesArray  fTracks;         // ESD tracks
   TClonesArray  fCaloTracks;     // Calorimeters' ESD tracks
index 33ce478..74e37bd 100644 (file)
@@ -32,33 +32,64 @@ Int_t AliESDpid::MakePID(AliESD *event)
   for (Int_t i=0; i<ntrk; i++) {
     Int_t ns=AliESDtrack::kSPECIES;
     Double_t p[10]={1.,1.,1.,1.,1.,1.,1.,1.,1.,1.};
+    const Double_t eps=1e-13;
 
     AliESDtrack *t=event->GetTrack(i);
 
     if ((t->GetStatus()&AliESDtrack::kITSpid )!=0) {
       Double_t d[10];
       t->GetITSpid(d);
-      for (Int_t j=0; j<ns; j++) p[j]*=d[j];
+      Int_t j, ok=0;
+      for (j=0; j<ns; j++) if (d[j]>eps) ok=1;
+      if (ok) 
+      for (j=0; j<ns; j++) p[j]*=d[j];
     }
 
     if ((t->GetStatus()&AliESDtrack::kTPCpid )!=0) {
       Double_t d[10];
       t->GetTPCpid(d);
-      for (Int_t j=0; j<ns; j++) p[j]*=d[j];
+      Int_t j, ok=0;
+      for (j=0; j<ns; j++) if (d[j]>eps) ok=1;
+      if (ok) 
+      for (j=0; j<ns; j++) p[j]*=d[j];
     }
 
     if ((t->GetStatus()&AliESDtrack::kTRDpid )!=0) {
       Double_t d[10];
       t->GetTRDpid(d);
-      for (Int_t j=0; j<ns; j++) p[j]*=d[j];
+      Int_t j, ok=0;
+      for (j=0; j<ns; j++) if (d[j]>eps) ok=1;
+      if (ok) 
+      for (j=0; j<ns; j++) p[j]*=d[j];
     }
 
     if (t->GetP()>0.7) // accept the TOF only for the high momenta
-      if ((t->GetStatus()&AliESDtrack::kTOFpid )!=0) {
-       Double_t d[10];
-       t->GetTOFpid(d);
-       for (Int_t j=0; j<ns; j++) p[j]*=d[j];
-      }
+    if ((t->GetStatus()&AliESDtrack::kTOFpid )!=0) {
+      Double_t d[10];
+      t->GetTOFpid(d);
+      Int_t j, ok=0;
+      for (j=0; j<ns; j++) if (d[j]>eps) ok=1;
+      if (ok) 
+      for (j=0; j<ns; j++) p[j]*=d[j];
+    }
+
+    if ((t->GetStatus()&AliESDtrack::kPHOSpid )!=0) {
+      Double_t d[10];
+      t->GetPHOSpid(d);
+      Int_t j, ok=0;
+      for (j=0; j<ns; j++) if (d[j]>eps) ok=1;
+      if (ok) 
+      for (j=0; j<ns; j++) p[j]*=d[j];
+    }
+
+    if ((t->GetStatus()&AliESDtrack::kRICHpid )!=0) {
+      Double_t d[10];
+      t->GetRICHpid(d);
+      Int_t j, ok=0;
+      for (j=0; j<ns; j++) if (d[j]>eps) ok=1;
+      if (ok) 
+      for (j=0; j<ns; j++) p[j]*=d[j];
+    }
 
     t->SetESDpid(p);
   }
index d2e0c4f..d1d0c29 100644 (file)
@@ -55,19 +55,24 @@ fTRDncls(0),
 fTRDsignal(0),
 fTOFchi2(0),
 fTOFindex(0),
-fTOFsignal(-1)
+fTOFsignal(-1),
+fPHOSsignal(-1),
+fRICHsignal(-1)
 {
   //
   // The default ESD constructor 
   //
   for (Int_t i=0; i<kSPECIES; i++) {
-    fTrackTime[i]=0;
-    fR[i]=0;
-    fITSr[i]=0;
-    fTPCr[i]=0;
-    fTRDr[i]=0;
-    fTOFr[i]=0;
+    fTrackTime[i]=0.;
+    fR[i]=1.;
+    fITSr[i]=1.;
+    fTPCr[i]=1.;
+    fTRDr[i]=1.;
+    fTOFr[i]=1.;
+    fPHOSr[i]=1.;
+    fRICHr[i]=1.;
   }
+  fPHOSpos[0]=fPHOSpos[1]=fPHOSpos[2]=0.;
   Int_t i;
   for (i=0; i<5; i++)  { fRp[i]=0.; fCp[i]=0.; fIp[i]=0.; fOp[i]=0.;}
   for (i=0; i<15; i++) { fRc[i]=0.; fCc[i]=0.; fIc[i]=0.; fOc[i]=0.;   }
@@ -81,7 +86,7 @@ fTOFsignal(-1)
 }
 
 //_______________________________________________________________________
-Float_t AliESDtrack::GetMass() const {
+Double_t AliESDtrack::GetMass() const {
   // Returns the mass of the most probable particle type
   Float_t max=0.;
   Int_t k=-1;
@@ -485,6 +490,37 @@ void AliESDtrack::GetTOFpid(Double_t *p) const {
   for (Int_t i=0; i<kSPECIES; i++) p[i]=fTOFr[i];
 }
 
+
+
+//_______________________________________________________________________
+void AliESDtrack::SetPHOSpid(const Double_t *p) {  
+  // Sets the probability of each particle type (in PHOS)
+  for (Int_t i=0; i<kSPECIES; i++) fPHOSr[i]=p[i];
+  SetStatus(AliESDtrack::kPHOSpid);
+}
+
+//_______________________________________________________________________
+void AliESDtrack::GetPHOSpid(Double_t *p) const {
+  // Gets probabilities of each particle type (in PHOS)
+  for (Int_t i=0; i<kSPECIES; i++) p[i]=fPHOSr[i];
+}
+
+
+//_______________________________________________________________________
+void AliESDtrack::SetRICHpid(const Double_t *p) {  
+  // Sets the probability of each particle type (in RICH)
+  for (Int_t i=0; i<kSPECIES; i++) fRICHr[i]=p[i];
+  SetStatus(AliESDtrack::kRICHpid);
+}
+
+//_______________________________________________________________________
+void AliESDtrack::GetRICHpid(Double_t *p) const {
+  // Gets probabilities of each particle type (in RICH)
+  for (Int_t i=0; i<kSPECIES; i++) p[i]=fRICHr[i];
+}
+
+
+
 //_______________________________________________________________________
 void AliESDtrack::SetESDpid(const Double_t *p) {  
   // Sets the probability of each particle type for the ESD track
index c84b4d0..f8448dd 100644 (file)
@@ -33,7 +33,7 @@ public:
   void GetExternalCovariance(Double_t cov[15]) const;
   Double_t GetIntegratedLength() const {return fTrackLength;}
   void GetIntegratedTimes(Double_t *times) const;
-  Float_t GetMass() const;
+  Double_t GetMass() const;
   Double_t GetP() const;
   void GetPxPyPz(Double_t *p) const;
   void GetXYZ(Double_t *r) const;
@@ -91,13 +91,32 @@ public:
   void    GetTOFpid(Double_t *p) const;
   UInt_t  GetTOFcluster() const {return fTOFindex;}
   void  SetTOFcluster(UInt_t index) {fTOFindex=index;}
+  
+  void    SetRICHsignal(Double_t beta) {fRICHsignal=beta;}
+  Float_t GetRICHsignal() const {return fRICHsignal;}
+  void    SetRICHpid(const Double_t *p);
+  void    GetRICHpid(Double_t *p) const;
+  
+  void SetPHOSposition(const Double_t *pos)  {
+    fPHOSpos[0] = pos[0]; fPHOSpos[1]=pos[1]; fPHOSpos[2]=pos[2];
+  }
+  void SetPHOSsignal(Double_t ene) {fPHOSsignal = ene; }
+  void SetPHOSpid(const Double_t *p);
+  void GetPHOSposition(Double_t *pos) const {
+    pos[0]=fPHOSpos[0]; pos[1]=fPHOSpos[1]; pos[2]=fPHOSpos[2];
+  }
+  Float_t GetPHOSsignal() const {return fPHOSsignal;}
+  void GetPHOSpid(Double_t *p) const;  
+
   Bool_t IsOn(Int_t mask){ return (fFlags&mask)>0;}
+  Bool_t IsRICH(){ return fFlags&kRICHpid;}
   enum {
     kITSin=0x0001,kITSout=0x0002,kITSrefit=0x0004,kITSpid=0x0008,
     kTPCin=0x0010,kTPCout=0x0020,kTPCrefit=0x0040,kTPCpid=0x0080,
     kTRDin=0x0100,kTRDout=0x0200,kTRDrefit=0x0400,kTRDpid=0x0800,
     kTOFin=0x1000,kTOFout=0x2000,kTOFrefit=0x4000,kTOFpid=0x8000,
-    kTRDStop=0x10000,
+    kPHOSpid=0x10000, kRICHpid=0x20000,
+    kTRDStop=0x20000000,
     kESDpid=0x40000000,
     kTIME=0x80000000
   }; 
@@ -145,6 +164,7 @@ protected:
   Float_t fTPCsignal;      // detector's PID signal
   Float_t fTPCr[kSPECIES]; // "detector response probabilities" (for the PID)
   Int_t   fTPCLabel;       // label according TPC
+
   // TRD related track information
   Float_t fTRDchi2;        // chi2 in the TRD
   Int_t   fTRDncls;        // number of clusters assigned in the TRD
@@ -159,8 +179,15 @@ protected:
   Float_t fTOFsignal;      // detector's PID signal
   Float_t fTOFr[kSPECIES]; // "detector response probabilities" (for the PID)
 
-  // HMPID related track information
+  // PHOS related track information 
+  Float_t fPHOSpos[3]; //position localised by PHOS in global coordinate system
+  Float_t fPHOSsignal; // energy measured by PHOS
+  Float_t fPHOSr[kSPECIES]; // PID information from PHOS
 
+  // HMPID related track information
+  Float_t fRICHsignal;     // detector's PID signal (beta for RICH)
+  Float_t fRICHr[kSPECIES];// "detector response probabilities" (for the PID)
+       
   ClassDef(AliESDtrack,2)  //ESDtrack 
 };