]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliESDtrack.cxx
Do not search for external template definitions in the implementation files
[u/mrichter/AliRoot.git] / STEER / AliESDtrack.cxx
index ed2da868378f26387aa9b0929dcab42cfb5eae0e..7dedbe632d09ff5e53f5332b288f68a262f75fbd 100644 (file)
 //   This is the class to deal with during the phisics analysis of data
 //      Origin: Iouri Belikov, CERN
 //      e-mail: Jouri.Belikov@cern.ch
+//
+//
+//
+//  What do you need to know before starting analysis
+//  (by Marian Ivanov: marian.ivanov@cern.ch)
+//
+//
+//   AliESDtrack:
+//   1.  What is the AliESDtrack
+//   2.  What informations do we store
+//   3.  How to use the information for analysis
+//   
+//
+//   1.AliESDtrack is the container of the information about the track/particle
+//     reconstructed during Barrel Tracking.
+//     The track information is propagated from one tracking detector to 
+//     other using the functionality of AliESDtrack - Current parameters.  
+//
+//     No global fit model is used.
+//     Barrel tracking use Kalman filtering technique, it gives optimal local 
+//     track parameters at given point under certian assumptions.
+//             
+//     Kalman filter take into account additional effect which are 
+//     difficult to handle using global fit.
+//     Effects:
+//        a.) Multiple scattering
+//        b.) Energy loss
+//        c.) Non homogenous magnetic field
+//
+//     In general case, following barrel detectors are contributing to 
+//     the Kalman track information:
+//         a. TPC
+//         b. ITS
+//         c. TRD
+//
+//      In general 3 reconstruction itteration are performed:
+//         1. Find tracks   - sequence TPC->ITS
+//         2. PropagateBack - sequence ITS->TPC->TRD -> Outer PID detectors
+//         3. Refit invward - sequence TRD->TPC->ITS
+//      The current tracks are updated after each detector (see bellow).
+//      In specical cases a track  sanpshots are stored.   
+// 
+//
+//      For some type of analysis (+visualization) track local parameters at 
+//      different position are neccesary. A snapshots during the track 
+//      propagation are created.
+//      (See AliExternalTrackParam class for desctiption of variables and 
+//      functionality)
+//      Snapshots:
+//      a. Current parameters - class itself (AliExternalTrackParam)
+//         Contributors: general case TRD->TPC->ITS
+//         Preferable usage:  Decission  - primary or secondary track
+//         NOTICE - By default the track parameters are stored at the DCA point
+//                  to the primary vertex. optimal for primary tracks, 
+//                  far from optimal for secondary tracks.
+//      b. Constrained parameters - Kalman information updated with 
+//         the Primary vertex information 
+//         Contributors: general case TRD->TPC->ITS
+//         Preferable usage: Use only for tracks selected as primary
+//         NOTICE - not real constrain - taken as additional measurement 
+//         with corresponding error
+//         Function:  
+//       const AliExternalTrackParam *GetConstrainedParam() const {return fCp;}
+//      c. Inner parameters -  Track parameters at inner wall of the TPC 
+//         Contributors: general case TRD->TPC
+//         function:
+//           const AliExternalTrackParam *GetInnerParam() const { return fIp;}
+//
+//      d. TPCinnerparam  - contributors - TPC only
+//         Contributors:  TPC
+//         Preferable usage: Requested for HBT study 
+//                         (smaller correlations as using also ITS information)
+//         NOTICE - the track parameters are propagated to the DCA to  
+//         to primary vertex
+//         Optimal for primary, far from optimal for secondary tracks
+//         Function:
+//    const AliExternalTrackParam *GetTPCInnerParam() const {return fTPCInner;}
+//     
+//      e. Outer parameters - 
+//           Contributors-  general case - ITS-> TPC -> TRD
+//           The last point - Outer parameters radius is determined
+//           e.a) Local inclination angle bigger than threshold - 
+//                Low momenta tracks 
+//           e.a) Catastrofic energy losss in material
+//           e.b) Not further improvement (no space points)
+//           Usage:             
+//              a.) Tracking: Starting parameter for Refit inward 
+//              b.) Visualization
+//              c.) QA
+//         NOTICE: Should be not used for the physic analysis
+//         Function:
+//            const AliExternalTrackParam *GetOuterParam() const { return fOp;}
+//
 //-----------------------------------------------------------------
 
 #include <TMath.h>
@@ -881,6 +974,12 @@ Bool_t AliESDtrack::UpdateTrackParams(const AliKalmanTrack *t, ULong_t flags){
     fITSchi2=t->GetChi2();
     fITSsignal=t->GetPIDsignal();
     fITSLabel = t->GetLabel();
+    // keep in fOp the parameters outside ITS for ITS stand-alone tracks 
+    if (flags==kITSout) { 
+      if (!fOp) fOp=new AliExternalTrackParam(*t);
+      else 
+        fOp->Set(t->GetX(),t->GetAlpha(),t->GetParameter(),t->GetCovariance());
+    }      
     break;
     
   case kTPCin: case kTPCrefit:
@@ -1167,7 +1266,10 @@ Char_t AliESDtrack::GetITSclusters(Int_t *idx) const {
   //---------------------------------------------------------------------
   if (idx!=0) {
      Int_t *index=fFriendTrack->GetITSindices();
-     for (Int_t i=0; i<AliESDfriendTrack::kMaxITScluster; i++) idx[i]=index[i];
+     for (Int_t i=0; i<AliESDfriendTrack::kMaxITScluster; i++) {
+         if ( (i>=fITSncls) && (i<6) ) idx[i]=-1;
+         else idx[i]=index[i];
+     }
   }
   return fITSncls;
 }