ROOT logo
#ifndef ALIFMDMCTRACKELOSS_MC
#define ALIFMDMCTRACKELOSS_MC
#include "AliForwardUtil.h"
#include "AliBaseMCTrackDensity.h"
#include "AliFMDFloatMap.h"
class TH1D;
class TH2;
class TH2D;
class AliESDFMD;
class TClonesArray;
class TTree;

/**
 * A class to calculate the particle eloss from track references.
 * This code is used both in AliForwardMCCorrectionsTask and
 * AliFMDMCEloss calculator. 
 * 
 * @par Input: 
 *    - AliESDFMD object  - from reconstruction
 *    - Kinematics
 *    - Track-References
 *
 * @par Output: 
 *    - AliESDFMD object  - content is # of track references/strip
 *
 * @par Corrections used: 
 *    - None
 *
 * @par Histograms: 
 *    - Incident angle vs number of track references
 *    - Incident angle vs number of strips/cluster
 *
 * @ingroup pwglf_forward_algo
 * @ingroup pwglf_forward_mc
 * @ingroup pwglf_forward_aod
 */
class AliFMDMCTrackELoss : public AliBaseMCTrackDensity 
{
public:
  /** 
   * Default constructor.  Do not use - for ROOT I/O system use only 
   */
  AliFMDMCTrackELoss();
  /** 
   * Normal constructor 
   * 
   * @param name Not used
   */
  AliFMDMCTrackELoss(const char* name);
  /** 
   * Copy constructor 
   * 
   * @param o Object to copy from 
   */
  AliFMDMCTrackELoss(const AliFMDMCTrackELoss& o);
  /** 
   * Assignment operator
   * 
   * @param o Object to assign from 
   * 
   * @return Reference to this 
   */
  AliFMDMCTrackELoss& operator=(const AliFMDMCTrackELoss& o);
  /** 
   * Destructor. 
   */
  virtual ~AliFMDMCTrackELoss() {}

  /** 
   * @{ 
   * @name Options 
   */
  /** 
   * Whether to make an output nTree 
   * 
   * @param use If true, make an nTree of hits 
   */
  void SetUseTree(Bool_t use=true) { fUseTree = use; }
  /** 
   * Set maximum number of strips per 'cluster' 
   * 
   * @param n  Maximum number of strips per 'cluster' 
   */
  void SetMaxConsequtiveStrips(UShort_t n) { fMaxConsequtiveStrips = n; }
  /* @} */

  /** 
   * Loops over all the particles in the passed event.  If @a primary
   * is not null, then that histogram is filled with the primary
   * particle information - irrespective of whether the particle
   * actually hits the FMD or not.  For each track (primary or
   * secondary, unless only primary information is requested - see
   * SetUseOnlyPrimary) loop over all track references to that
   * particle and check if they come from the FMD.  In that case,
   * figure out which strip(s) to assign the track to, and fill the @a
   * hits structure.
   * 
   * @param esd      FMD ESD structure 
   * @param event    MC event 
   * @param vz       IP z-coordinate
   * @param cent     Event centrality 
   * 
   * @return true 
   */
  Bool_t Calculate(const AliESDFMD&    esd, 
		   const AliMCEvent&   event, 
		   Double_t            vz,
		   Double_t            cent);
  /** 
   * Define ouputs 
   * 
   * @param list List to add outputs to
   */
  void CreateOutputObjects(TList* list);

  /** 
   * @{ 
   * @name Access to cache 
   */
  /** 
   * Clear caches 
   */
  void Clear(Option_t* opt="");
  /**
   * Get reference to cache of eloss per primary 
   *
   * @return Reference to cache of eloss per primary 
   */
  AliFMDFloatMap& GetPrimaries() { return fPrimaries; }
  /**
   * Get constant reference to cache of eloss per primary 
   *
   * @return Constant reference to cache of eloss per primary 
   */
  const AliFMDFloatMap& GetPrimaries() const { return fPrimaries; }
  /**
   * Get reference to cache of eloss per secondary
   *
   * @return Reference to cache of eloss per secondary
   */
  AliFMDFloatMap& GetSecondaries() { return fSecondaries; }
  /**
   * Get constant reference to cache of eloss per secondary
   *
   * @return Constant reference to cache of eloss per secondary
   */
  const AliFMDFloatMap& GetSecondaries() const { return fSecondaries; }
  /**
   * Get reference to cache of eloss for all 
   *
   * @return Reference to cache of eloss for all 
   */
  AliFMDFloatMap& GetAll() { return fAll; }
  /**
   * Get constant reference to cache of eloss for all 
   *
   * @return Constant reference to cache of eloss for all 
   */
  const AliFMDFloatMap& GetAll() const { return fAll; }
  /**
   * Get reference to cache of psuedo-rapidity (@f$ \eta@f$)
   *
   * @return Reference to cache of psuedo-rapidity (@f$ \eta@f$)
   */
  AliFMDFloatMap& GetEta() { return fEta; }
  /**
   * Get constant reference to cache of psuedo-rapidity (@f$ \eta@f$)
   *
   * @return Constant reference to cache of psuedo-rapidity (@f$ \eta@f$)
   */
  const AliFMDFloatMap& GetEta() const { return fEta; }

  /** 
   * Get pointer to NTutple if defined
   * 
   * @return Pointer to nTree or null if not enabled 
   */
  TTree* GetTree() const { return fTree; }
  TClonesArray* GetHits() const { return fHits; }

  TH2* GetBetaGammadEdx() const { return fBetaGammadEdx; }
  TH2* GetBetaGammaEta() const { return fBetaGammaEta; } 
  TH2* GetDEdxEta() const { return fDEdxEta; }
  /* @} */

  /** 
   * Print this task 
   * 
   * @param option Not used 
   */
  void Print(Option_t* option="") const;


  /** 
   * Structure to hold hit information 
   */
  struct Hit : public TObject { 
    Double_t fGamma;
    Double_t fBeta;
    Double_t fEta;
    Double_t fDe;
    Double_t fDx;
    UInt_t   fDetId;
    Int_t    fPdg;
    Bool_t   fPrimary;
    mutable UShort_t fDetector; //! 
    mutable Char_t   fRing;     //! 
    mutable UShort_t fSector;   //!
    mutable UShort_t fStrip;    //! 
    
    Hit();
    void Decode() const; 
    UShort_t D() const { Decode(); return fDetector; }
    Char_t   R() const { Decode(); return fRing;     }
    UShort_t S() const { Decode(); return fSector;   }
    UShort_t T() const { Decode(); return fStrip;    }
    Double_t DeDx() const { return (fDx > 0 ? fDe/fDx : 0); }
    Double_t Eta() const { return fEta; }
    Double_t BetaGamma() const { return fBeta*fGamma; }
    UInt_t AbsPdg() const;
    Bool_t IsPrimary() const { return fPrimary; }
    Bool_t IsPion() const { return AbsPdg() == 211; }
    Bool_t IsKaon() const { return AbsPdg() == 321; }
    Bool_t IsProton() const { return AbsPdg() == 2212; }
    Bool_t IsElectron() const { return AbsPdg() == 11 || AbsPdg() == 13; }

    ClassDef(Hit,1);
  };
  /** 
   * Structure to hold event information 
   */
  struct Event  { 
    Double_t fIpZ;
    Double_t fCent;
  };
    
protected:
  /** 
   * Must be defined to return the track-reference ID for this detector
   * 
   * @return Detector id set on track references
   */
  Int_t GetDetectorId() const;
  /** 
   * Process a track reference 
   * 
   * @param particle Particle 
   * @param mother   Ultimate mother (if not primary)
   * @param ref      Reference 
   * 
   * @return 0 if no output should be generated for this reference, or
   * pointer to track-reference to produce output for.
   */
  AliTrackReference* ProcessRef(AliMCParticle* particle, 
				const AliMCParticle* mother, 
				AliTrackReference* ref);
  /** 
   * Called at before loop over track references
   * 
   */
  void BeginTrackRefs();
  /** 
   * Called at before loop over track references
   * 
   * @param nRefs Number of references 
   */
  void EndTrackRefs(Int_t nRefs);
  /** 
   * Store a particle hit in Base<i>dr</i>[<i>s,t</i>] in @a output
   * 
   * 
   * @param particle  Particle to store
   * @param mother    Ultimate mother of particle 
   * @param ref       Longest track reference
   *
   * @return weight
   */  
  Double_t StoreParticle(AliMCParticle*       particle, 
			 const AliMCParticle* mother,
			 AliTrackReference*   ref) const;
  //__________________________________________________________________
  /** 
   * Structure holding the state of the `tracker' 
   * 
   */
  mutable struct State 
  {
    Double_t angle;            // Angle 
    UShort_t oldDetector;      // Last detector
    Char_t   oldRing;          // Last ring
    UShort_t oldSector;        // Last sector
    UShort_t oldStrip;         // Last strip 
    UShort_t startStrip;       // First strip 
    UShort_t nRefs;            // Number of references
    UShort_t nStrips;          // Number of strips 
    UShort_t count;            // Count of hit strips 
    Double_t de;               // Summed energy loss 
    Double_t dx;               // Summed dx 
    AliTrackReference* longest; //! Longest track through 
    /** 
     * Clear this state
     * 
     * @param alsoCount If true, also clear count 
     */
    void Clear(Bool_t alsoCount=false);
    /** 
     * Assignment operator 
     * 
     * @param o Object to assign from 
     * 
     * @return Reference to this object 
     */
    State& operator=(const State& o);
  } fState; //! State 
  Event fEvent;
    

  UShort_t   fMaxConsequtiveStrips; // Max 'cluster' size
  Bool_t     fUseTree;             // Whether to make an nTree 
  TClonesArray* fHits; 
  TTree*     fTree;  
  TH1D*      fNr;                   // Number of track-refs per cluster
  TH1D*      fNt;                   // Size of cluster in strips 
  TH1D*      fNc;                   // Number of clusters per track
  TH2D*      fNcr;                  // Number of clusters per track
  TH2*       fBetaGammadEdx;
  TH2*       fBetaGammaEta; 
  TH2*       fDEdxEta;
  mutable AliFMDFloatMap fPrimaries;        // Cache of eloss per primary 
  mutable AliFMDFloatMap fSecondaries;      // Cache of eloss per secondary
  mutable AliFMDFloatMap fAll;              // Cache of eloss for all 
  AliFMDFloatMap fEta;              // Cache of pseudo-rapidity


  ClassDef(AliFMDMCTrackELoss,1); // Calculate track-ref density
};

#endif
// Local Variables:
//  mode: C++ 
// End:
 AliFMDMCTrackELoss.h:1
 AliFMDMCTrackELoss.h:2
 AliFMDMCTrackELoss.h:3
 AliFMDMCTrackELoss.h:4
 AliFMDMCTrackELoss.h:5
 AliFMDMCTrackELoss.h:6
 AliFMDMCTrackELoss.h:7
 AliFMDMCTrackELoss.h:8
 AliFMDMCTrackELoss.h:9
 AliFMDMCTrackELoss.h:10
 AliFMDMCTrackELoss.h:11
 AliFMDMCTrackELoss.h:12
 AliFMDMCTrackELoss.h:13
 AliFMDMCTrackELoss.h:14
 AliFMDMCTrackELoss.h:15
 AliFMDMCTrackELoss.h:16
 AliFMDMCTrackELoss.h:17
 AliFMDMCTrackELoss.h:18
 AliFMDMCTrackELoss.h:19
 AliFMDMCTrackELoss.h:20
 AliFMDMCTrackELoss.h:21
 AliFMDMCTrackELoss.h:22
 AliFMDMCTrackELoss.h:23
 AliFMDMCTrackELoss.h:24
 AliFMDMCTrackELoss.h:25
 AliFMDMCTrackELoss.h:26
 AliFMDMCTrackELoss.h:27
 AliFMDMCTrackELoss.h:28
 AliFMDMCTrackELoss.h:29
 AliFMDMCTrackELoss.h:30
 AliFMDMCTrackELoss.h:31
 AliFMDMCTrackELoss.h:32
 AliFMDMCTrackELoss.h:33
 AliFMDMCTrackELoss.h:34
 AliFMDMCTrackELoss.h:35
 AliFMDMCTrackELoss.h:36
 AliFMDMCTrackELoss.h:37
 AliFMDMCTrackELoss.h:38
 AliFMDMCTrackELoss.h:39
 AliFMDMCTrackELoss.h:40
 AliFMDMCTrackELoss.h:41
 AliFMDMCTrackELoss.h:42
 AliFMDMCTrackELoss.h:43
 AliFMDMCTrackELoss.h:44
 AliFMDMCTrackELoss.h:45
 AliFMDMCTrackELoss.h:46
 AliFMDMCTrackELoss.h:47
 AliFMDMCTrackELoss.h:48
 AliFMDMCTrackELoss.h:49
 AliFMDMCTrackELoss.h:50
 AliFMDMCTrackELoss.h:51
 AliFMDMCTrackELoss.h:52
 AliFMDMCTrackELoss.h:53
 AliFMDMCTrackELoss.h:54
 AliFMDMCTrackELoss.h:55
 AliFMDMCTrackELoss.h:56
 AliFMDMCTrackELoss.h:57
 AliFMDMCTrackELoss.h:58
 AliFMDMCTrackELoss.h:59
 AliFMDMCTrackELoss.h:60
 AliFMDMCTrackELoss.h:61
 AliFMDMCTrackELoss.h:62
 AliFMDMCTrackELoss.h:63
 AliFMDMCTrackELoss.h:64
 AliFMDMCTrackELoss.h:65
 AliFMDMCTrackELoss.h:66
 AliFMDMCTrackELoss.h:67
 AliFMDMCTrackELoss.h:68
 AliFMDMCTrackELoss.h:69
 AliFMDMCTrackELoss.h:70
 AliFMDMCTrackELoss.h:71
 AliFMDMCTrackELoss.h:72
 AliFMDMCTrackELoss.h:73
 AliFMDMCTrackELoss.h:74
 AliFMDMCTrackELoss.h:75
 AliFMDMCTrackELoss.h:76
 AliFMDMCTrackELoss.h:77
 AliFMDMCTrackELoss.h:78
 AliFMDMCTrackELoss.h:79
 AliFMDMCTrackELoss.h:80
 AliFMDMCTrackELoss.h:81
 AliFMDMCTrackELoss.h:82
 AliFMDMCTrackELoss.h:83
 AliFMDMCTrackELoss.h:84
 AliFMDMCTrackELoss.h:85
 AliFMDMCTrackELoss.h:86
 AliFMDMCTrackELoss.h:87
 AliFMDMCTrackELoss.h:88
 AliFMDMCTrackELoss.h:89
 AliFMDMCTrackELoss.h:90
 AliFMDMCTrackELoss.h:91
 AliFMDMCTrackELoss.h:92
 AliFMDMCTrackELoss.h:93
 AliFMDMCTrackELoss.h:94
 AliFMDMCTrackELoss.h:95
 AliFMDMCTrackELoss.h:96
 AliFMDMCTrackELoss.h:97
 AliFMDMCTrackELoss.h:98
 AliFMDMCTrackELoss.h:99
 AliFMDMCTrackELoss.h:100
 AliFMDMCTrackELoss.h:101
 AliFMDMCTrackELoss.h:102
 AliFMDMCTrackELoss.h:103
 AliFMDMCTrackELoss.h:104
 AliFMDMCTrackELoss.h:105
 AliFMDMCTrackELoss.h:106
 AliFMDMCTrackELoss.h:107
 AliFMDMCTrackELoss.h:108
 AliFMDMCTrackELoss.h:109
 AliFMDMCTrackELoss.h:110
 AliFMDMCTrackELoss.h:111
 AliFMDMCTrackELoss.h:112
 AliFMDMCTrackELoss.h:113
 AliFMDMCTrackELoss.h:114
 AliFMDMCTrackELoss.h:115
 AliFMDMCTrackELoss.h:116
 AliFMDMCTrackELoss.h:117
 AliFMDMCTrackELoss.h:118
 AliFMDMCTrackELoss.h:119
 AliFMDMCTrackELoss.h:120
 AliFMDMCTrackELoss.h:121
 AliFMDMCTrackELoss.h:122
 AliFMDMCTrackELoss.h:123
 AliFMDMCTrackELoss.h:124
 AliFMDMCTrackELoss.h:125
 AliFMDMCTrackELoss.h:126
 AliFMDMCTrackELoss.h:127
 AliFMDMCTrackELoss.h:128
 AliFMDMCTrackELoss.h:129
 AliFMDMCTrackELoss.h:130
 AliFMDMCTrackELoss.h:131
 AliFMDMCTrackELoss.h:132
 AliFMDMCTrackELoss.h:133
 AliFMDMCTrackELoss.h:134
 AliFMDMCTrackELoss.h:135
 AliFMDMCTrackELoss.h:136
 AliFMDMCTrackELoss.h:137
 AliFMDMCTrackELoss.h:138
 AliFMDMCTrackELoss.h:139
 AliFMDMCTrackELoss.h:140
 AliFMDMCTrackELoss.h:141
 AliFMDMCTrackELoss.h:142
 AliFMDMCTrackELoss.h:143
 AliFMDMCTrackELoss.h:144
 AliFMDMCTrackELoss.h:145
 AliFMDMCTrackELoss.h:146
 AliFMDMCTrackELoss.h:147
 AliFMDMCTrackELoss.h:148
 AliFMDMCTrackELoss.h:149
 AliFMDMCTrackELoss.h:150
 AliFMDMCTrackELoss.h:151
 AliFMDMCTrackELoss.h:152
 AliFMDMCTrackELoss.h:153
 AliFMDMCTrackELoss.h:154
 AliFMDMCTrackELoss.h:155
 AliFMDMCTrackELoss.h:156
 AliFMDMCTrackELoss.h:157
 AliFMDMCTrackELoss.h:158
 AliFMDMCTrackELoss.h:159
 AliFMDMCTrackELoss.h:160
 AliFMDMCTrackELoss.h:161
 AliFMDMCTrackELoss.h:162
 AliFMDMCTrackELoss.h:163
 AliFMDMCTrackELoss.h:164
 AliFMDMCTrackELoss.h:165
 AliFMDMCTrackELoss.h:166
 AliFMDMCTrackELoss.h:167
 AliFMDMCTrackELoss.h:168
 AliFMDMCTrackELoss.h:169
 AliFMDMCTrackELoss.h:170
 AliFMDMCTrackELoss.h:171
 AliFMDMCTrackELoss.h:172
 AliFMDMCTrackELoss.h:173
 AliFMDMCTrackELoss.h:174
 AliFMDMCTrackELoss.h:175
 AliFMDMCTrackELoss.h:176
 AliFMDMCTrackELoss.h:177
 AliFMDMCTrackELoss.h:178
 AliFMDMCTrackELoss.h:179
 AliFMDMCTrackELoss.h:180
 AliFMDMCTrackELoss.h:181
 AliFMDMCTrackELoss.h:182
 AliFMDMCTrackELoss.h:183
 AliFMDMCTrackELoss.h:184
 AliFMDMCTrackELoss.h:185
 AliFMDMCTrackELoss.h:186
 AliFMDMCTrackELoss.h:187
 AliFMDMCTrackELoss.h:188
 AliFMDMCTrackELoss.h:189
 AliFMDMCTrackELoss.h:190
 AliFMDMCTrackELoss.h:191
 AliFMDMCTrackELoss.h:192
 AliFMDMCTrackELoss.h:193
 AliFMDMCTrackELoss.h:194
 AliFMDMCTrackELoss.h:195
 AliFMDMCTrackELoss.h:196
 AliFMDMCTrackELoss.h:197
 AliFMDMCTrackELoss.h:198
 AliFMDMCTrackELoss.h:199
 AliFMDMCTrackELoss.h:200
 AliFMDMCTrackELoss.h:201
 AliFMDMCTrackELoss.h:202
 AliFMDMCTrackELoss.h:203
 AliFMDMCTrackELoss.h:204
 AliFMDMCTrackELoss.h:205
 AliFMDMCTrackELoss.h:206
 AliFMDMCTrackELoss.h:207
 AliFMDMCTrackELoss.h:208
 AliFMDMCTrackELoss.h:209
 AliFMDMCTrackELoss.h:210
 AliFMDMCTrackELoss.h:211
 AliFMDMCTrackELoss.h:212
 AliFMDMCTrackELoss.h:213
 AliFMDMCTrackELoss.h:214
 AliFMDMCTrackELoss.h:215
 AliFMDMCTrackELoss.h:216
 AliFMDMCTrackELoss.h:217
 AliFMDMCTrackELoss.h:218
 AliFMDMCTrackELoss.h:219
 AliFMDMCTrackELoss.h:220
 AliFMDMCTrackELoss.h:221
 AliFMDMCTrackELoss.h:222
 AliFMDMCTrackELoss.h:223
 AliFMDMCTrackELoss.h:224
 AliFMDMCTrackELoss.h:225
 AliFMDMCTrackELoss.h:226
 AliFMDMCTrackELoss.h:227
 AliFMDMCTrackELoss.h:228
 AliFMDMCTrackELoss.h:229
 AliFMDMCTrackELoss.h:230
 AliFMDMCTrackELoss.h:231
 AliFMDMCTrackELoss.h:232
 AliFMDMCTrackELoss.h:233
 AliFMDMCTrackELoss.h:234
 AliFMDMCTrackELoss.h:235
 AliFMDMCTrackELoss.h:236
 AliFMDMCTrackELoss.h:237
 AliFMDMCTrackELoss.h:238
 AliFMDMCTrackELoss.h:239
 AliFMDMCTrackELoss.h:240
 AliFMDMCTrackELoss.h:241
 AliFMDMCTrackELoss.h:242
 AliFMDMCTrackELoss.h:243
 AliFMDMCTrackELoss.h:244
 AliFMDMCTrackELoss.h:245
 AliFMDMCTrackELoss.h:246
 AliFMDMCTrackELoss.h:247
 AliFMDMCTrackELoss.h:248
 AliFMDMCTrackELoss.h:249
 AliFMDMCTrackELoss.h:250
 AliFMDMCTrackELoss.h:251
 AliFMDMCTrackELoss.h:252
 AliFMDMCTrackELoss.h:253
 AliFMDMCTrackELoss.h:254
 AliFMDMCTrackELoss.h:255
 AliFMDMCTrackELoss.h:256
 AliFMDMCTrackELoss.h:257
 AliFMDMCTrackELoss.h:258
 AliFMDMCTrackELoss.h:259
 AliFMDMCTrackELoss.h:260
 AliFMDMCTrackELoss.h:261
 AliFMDMCTrackELoss.h:262
 AliFMDMCTrackELoss.h:263
 AliFMDMCTrackELoss.h:264
 AliFMDMCTrackELoss.h:265
 AliFMDMCTrackELoss.h:266
 AliFMDMCTrackELoss.h:267
 AliFMDMCTrackELoss.h:268
 AliFMDMCTrackELoss.h:269
 AliFMDMCTrackELoss.h:270
 AliFMDMCTrackELoss.h:271
 AliFMDMCTrackELoss.h:272
 AliFMDMCTrackELoss.h:273
 AliFMDMCTrackELoss.h:274
 AliFMDMCTrackELoss.h:275
 AliFMDMCTrackELoss.h:276
 AliFMDMCTrackELoss.h:277
 AliFMDMCTrackELoss.h:278
 AliFMDMCTrackELoss.h:279
 AliFMDMCTrackELoss.h:280
 AliFMDMCTrackELoss.h:281
 AliFMDMCTrackELoss.h:282
 AliFMDMCTrackELoss.h:283
 AliFMDMCTrackELoss.h:284
 AliFMDMCTrackELoss.h:285
 AliFMDMCTrackELoss.h:286
 AliFMDMCTrackELoss.h:287
 AliFMDMCTrackELoss.h:288
 AliFMDMCTrackELoss.h:289
 AliFMDMCTrackELoss.h:290
 AliFMDMCTrackELoss.h:291
 AliFMDMCTrackELoss.h:292
 AliFMDMCTrackELoss.h:293
 AliFMDMCTrackELoss.h:294
 AliFMDMCTrackELoss.h:295
 AliFMDMCTrackELoss.h:296
 AliFMDMCTrackELoss.h:297
 AliFMDMCTrackELoss.h:298
 AliFMDMCTrackELoss.h:299
 AliFMDMCTrackELoss.h:300
 AliFMDMCTrackELoss.h:301
 AliFMDMCTrackELoss.h:302
 AliFMDMCTrackELoss.h:303
 AliFMDMCTrackELoss.h:304
 AliFMDMCTrackELoss.h:305
 AliFMDMCTrackELoss.h:306
 AliFMDMCTrackELoss.h:307
 AliFMDMCTrackELoss.h:308
 AliFMDMCTrackELoss.h:309
 AliFMDMCTrackELoss.h:310
 AliFMDMCTrackELoss.h:311
 AliFMDMCTrackELoss.h:312
 AliFMDMCTrackELoss.h:313
 AliFMDMCTrackELoss.h:314
 AliFMDMCTrackELoss.h:315
 AliFMDMCTrackELoss.h:316
 AliFMDMCTrackELoss.h:317
 AliFMDMCTrackELoss.h:318
 AliFMDMCTrackELoss.h:319
 AliFMDMCTrackELoss.h:320
 AliFMDMCTrackELoss.h:321
 AliFMDMCTrackELoss.h:322
 AliFMDMCTrackELoss.h:323
 AliFMDMCTrackELoss.h:324
 AliFMDMCTrackELoss.h:325
 AliFMDMCTrackELoss.h:326
 AliFMDMCTrackELoss.h:327
 AliFMDMCTrackELoss.h:328
 AliFMDMCTrackELoss.h:329
 AliFMDMCTrackELoss.h:330
 AliFMDMCTrackELoss.h:331
 AliFMDMCTrackELoss.h:332
 AliFMDMCTrackELoss.h:333
 AliFMDMCTrackELoss.h:334
 AliFMDMCTrackELoss.h:335
 AliFMDMCTrackELoss.h:336
 AliFMDMCTrackELoss.h:337
 AliFMDMCTrackELoss.h:338
 AliFMDMCTrackELoss.h:339
 AliFMDMCTrackELoss.h:340
 AliFMDMCTrackELoss.h:341