ROOT logo
#ifndef _ALINANOAODTRACKMAPPING_H_
#define _ALINANOAODTRACKMAPPING_H_

#include "TObject.h"
#include "TFile.h"
#include "AliLog.h"
#include "TSystem.h"
#include "TTree.h"
#include "TDirectory.h"

class AliNanoAODTrackMapping : public TObject
{
public:
  AliNanoAODTrackMapping();
  AliNanoAODTrackMapping(const char * mappingString);
  virtual ~AliNanoAODTrackMapping(){;}

  void Print(const Option_t * opt = "") const;

  static AliNanoAODTrackMapping * GetInstance() {
    if(!fInstance) LoadInstance() ;
    return fInstance;
  }  
  

  const char * GetVarName(Int_t index) const;
  Int_t GetVarIndex(TString varName); // cannot be const (uses stl map)

  //TODO: implement custom variables

  // Getters
  //  Internal
  Int_t GetSize()             const { return fSize;             }  
  //  Kin vars
  Int_t GetPt()               const { return fPt;               }
  Int_t GetPhi()              const { return fPhi;              }
  Int_t GetTheta()            const { return fTheta;            }
  Int_t GetChi2PerNDF()       const { return fChi2PerNDF;       }
  Int_t GetPosX()             const { return fPosX;             }
  Int_t GetPosY()             const { return fPosY;             }
  Int_t GetPosZ()             const { return fPosZ;             }
  Int_t GetPDCAX()            const { return fPDCAX;            }
  Int_t GetPDCAY()            const { return fPDCAY;            }
  Int_t GetPDCAZ()            const { return fPDCAZ;            }
  Int_t GetPosDCAx()          const { return fPosDCAx;          }
  Int_t GetPosDCAy()          const { return fPosDCAy;          }
  Int_t GetRAtAbsorberEnd()   const { return fRAtAbsorberEnd;   }
  Int_t GetTPCncls()          const { return fTPCncls;          }
  Int_t Getid()               const { return fid;               }
  Int_t GetTPCnclsF()         const { return fTPCnclsF;         }
  Int_t GetTPCNCrossedRows()  const { return fTPCNCrossedRows;  }
  Int_t GetTrackPhiOnEMCal()  const { return fTrackPhiOnEMCal;  }
  Int_t GetTrackEtaOnEMCal()  const { return fTrackEtaOnEMCal;  }
  Int_t GetTrackPtOnEMCal()   const { return fTrackPtOnEMCal;   }
  Int_t GetITSsignal()        const { return fITSsignal;        }
  Int_t GetTPCsignal()        const { return fTPCsignal;        }
  Int_t GetTPCsignalTuned()   const { return fTPCsignalTuned;   }
  Int_t GetTPCsignalN()       const { return fTPCsignalN;       }
  Int_t GetTPCmomentum()      const { return fTPCmomentum;      }
  Int_t GetTPCTgl()           const { return fTPCTgl;           }
  Int_t GetTOFsignal()        const { return fTOFsignal;        }
  Int_t GetintegratedLenght() const { return fintegratedLenght; }
  Int_t GetTOFsignalTuned()   const { return fTOFsignalTuned;   }
  Int_t GetHMPIDsignal()      const { return fHMPIDsignal;      }
  Int_t GetHMPIDoccupancy()   const { return fHMPIDoccupancy;   }
  Int_t GetTRDsignal()        const { return fTRDsignal;        }
  Int_t GetTRDChi2()          const { return fTRDChi2;          }
  Int_t GetTRDnSlices()       const { return fTRDnSlices;       }
  Int_t Getcovmat()           const { return fcovmat;           }
  
  // TODO: implement custom variables


private:

  static void  LoadInstance() ;
  
  Int_t fSize; // Number of variables actually allocated
  void  SetSize (Int_t var) { fSize = var;}
  // FIXME: should this be static?
  Int_t fPt;      	  // Mapping variable
  Int_t fPhi;		  // Mapping variable
  Int_t fTheta;		  // Mapping variable
  Int_t fChi2PerNDF;	  // Mapping variable
  Int_t fPosX;		  // Mapping variable
  Int_t fPosY;		  // Mapping variable
  Int_t fPosZ;		  // Mapping variable
  Int_t fPDCAX;		  // Mapping variable
  Int_t fPDCAY;		  // Mapping variable
  Int_t fPDCAZ;		  // Mapping variable
  Int_t fPosDCAx;	  // Mapping variable
  Int_t fPosDCAy;	  // Mapping variable
  Int_t fRAtAbsorberEnd;  // Mapping variable
  Int_t fTPCncls;	  // Mapping variable
  Int_t fid;		  // Mapping variable
  Int_t fTPCnclsF;	  // Mapping variable
  Int_t fTPCNCrossedRows; // Mapping variable
  Int_t fTrackPhiOnEMCal; // Mapping variable
  Int_t fTrackEtaOnEMCal; // Mapping variable
  Int_t fTrackPtOnEMCal; // Mapping variable
  Int_t fITSsignal;	  // Mapping variable
  Int_t fTPCsignal;	  // Mapping variable
  Int_t fTPCsignalTuned;  // Mapping variable
  Int_t fTPCsignalN;	  // Mapping variable
  Int_t fTPCmomentum;	  // Mapping variable
  Int_t fTPCTgl;	  // Mapping variable
  Int_t fTOFsignal;	  // Mapping variable
  Int_t fintegratedLenght;// Mapping variable
  Int_t fTOFsignalTuned;  // Mapping variable
  Int_t fHMPIDsignal;	  // Mapping variable
  Int_t fHMPIDoccupancy;  // Mapping variable
  Int_t fTRDsignal;	  // Mapping variable
  Int_t fTRDChi2;	  // Mapping variable
  Int_t fTRDnSlices;	  // Mapping variable
  Int_t fcovmat;          // Mapping variable
  
  // Setters are private because we don't want the mapping to change once the class has been instantiated 
  void  SetPt               (Int_t var) { fPt = var;               }
  void  SetPhi              (Int_t var) { fPhi = var;              }  
  void  SetTheta            (Int_t var) { fTheta = var;            }
  void  SetChi2PerNDF       (Int_t var) { fChi2PerNDF = var;       }  
  void  SetPosX             (Int_t var) { fPosX = var;             }
  void  SetPosY             (Int_t var) { fPosY = var;             }
  void  SetPosZ             (Int_t var) { fPosZ = var;             }
  void  SetPDCAX            (Int_t var) { fPDCAX = var;            }
  void  SetPDCAY            (Int_t var) { fPDCAY = var;            }
  void  SetPDCAZ            (Int_t var) { fPDCAZ = var;            }
  void  SetPosDCAx          (Int_t var) { fPosDCAx = var;          }
  void  SetPosDCAy          (Int_t var) { fPosDCAy = var;          }
  void  SetRAtAbsorberEnd   (Int_t var) { fRAtAbsorberEnd = var;   }
  void  SetTPCncls          (Int_t var) { fTPCncls = var;          }
  void  Setid               (Int_t var) { fid = var;               }
  void  SetTPCnclsF         (Int_t var) { fTPCnclsF = var;         }
  void  SetTPCNCrossedRows  (Int_t var) { fTPCNCrossedRows = var;  }
  void  SetTrackPhiOnEMCal  (Int_t var) { fTrackPhiOnEMCal = var;  }
  void  SetTrackEtaOnEMCal  (Int_t var) { fTrackEtaOnEMCal = var;  }
  void  SetTrackPtOnEMCal   (Int_t var) { fTrackPtOnEMCal = var;   }
  void  SetITSsignal        (Int_t var) { fITSsignal = var;        }
  void  SetTPCsignal        (Int_t var) { fTPCsignal = var;        }
  void  SetTPCsignalTuned   (Int_t var) { fTPCsignalTuned = var;   }
  void  SetTPCsignalN       (Int_t var) { fTPCsignalN = var;       }
  void  SetTPCmomentum      (Int_t var) { fTPCmomentum = var;      }
  void  SetTPCTgl           (Int_t var) { fTPCTgl = var;           }
  void  SetTOFsignal        (Int_t var) { fTOFsignal = var;        }
  void  SetintegratedLenght (Int_t var) { fintegratedLenght = var; }
  void  SetTOFsignalTuned   (Int_t var) { fTOFsignalTuned = var;   }
  void  SetHMPIDsignal      (Int_t var) { fHMPIDsignal = var;      }
  void  SetHMPIDoccupancy   (Int_t var) { fHMPIDoccupancy = var;   }
  void  SetTRDsignal        (Int_t var) { fTRDsignal = var;        }
  void  SetTRDChi2          (Int_t var) { fTRDChi2 = var;          }
  void  SetTRDnSlices       (Int_t var) { fTRDnSlices = var;       }
  void  Setcovmat           (Int_t var) { fcovmat = var;           }

  static AliNanoAODTrackMapping * fInstance; //instance, needed for the singleton implementation
  static TString fMappingString; // the string which this class was initialized with
  std::map<TString,int> fMapCstVar;// Map of indexes of custom variables: CACHE THIS TO CONST INTs IN YOUR TASK TO AVOID CONTINUOUS STRING COMPARISONS
  ClassDef(AliNanoAODTrackMapping, 1)
  
};

#endif /* _ALINANOAODTRACKMAPPING_H_ */
 AliNanoAODTrackMapping.h:1
 AliNanoAODTrackMapping.h:2
 AliNanoAODTrackMapping.h:3
 AliNanoAODTrackMapping.h:4
 AliNanoAODTrackMapping.h:5
 AliNanoAODTrackMapping.h:6
 AliNanoAODTrackMapping.h:7
 AliNanoAODTrackMapping.h:8
 AliNanoAODTrackMapping.h:9
 AliNanoAODTrackMapping.h:10
 AliNanoAODTrackMapping.h:11
 AliNanoAODTrackMapping.h:12
 AliNanoAODTrackMapping.h:13
 AliNanoAODTrackMapping.h:14
 AliNanoAODTrackMapping.h:15
 AliNanoAODTrackMapping.h:16
 AliNanoAODTrackMapping.h:17
 AliNanoAODTrackMapping.h:18
 AliNanoAODTrackMapping.h:19
 AliNanoAODTrackMapping.h:20
 AliNanoAODTrackMapping.h:21
 AliNanoAODTrackMapping.h:22
 AliNanoAODTrackMapping.h:23
 AliNanoAODTrackMapping.h:24
 AliNanoAODTrackMapping.h:25
 AliNanoAODTrackMapping.h:26
 AliNanoAODTrackMapping.h:27
 AliNanoAODTrackMapping.h:28
 AliNanoAODTrackMapping.h:29
 AliNanoAODTrackMapping.h:30
 AliNanoAODTrackMapping.h:31
 AliNanoAODTrackMapping.h:32
 AliNanoAODTrackMapping.h:33
 AliNanoAODTrackMapping.h:34
 AliNanoAODTrackMapping.h:35
 AliNanoAODTrackMapping.h:36
 AliNanoAODTrackMapping.h:37
 AliNanoAODTrackMapping.h:38
 AliNanoAODTrackMapping.h:39
 AliNanoAODTrackMapping.h:40
 AliNanoAODTrackMapping.h:41
 AliNanoAODTrackMapping.h:42
 AliNanoAODTrackMapping.h:43
 AliNanoAODTrackMapping.h:44
 AliNanoAODTrackMapping.h:45
 AliNanoAODTrackMapping.h:46
 AliNanoAODTrackMapping.h:47
 AliNanoAODTrackMapping.h:48
 AliNanoAODTrackMapping.h:49
 AliNanoAODTrackMapping.h:50
 AliNanoAODTrackMapping.h:51
 AliNanoAODTrackMapping.h:52
 AliNanoAODTrackMapping.h:53
 AliNanoAODTrackMapping.h:54
 AliNanoAODTrackMapping.h:55
 AliNanoAODTrackMapping.h:56
 AliNanoAODTrackMapping.h:57
 AliNanoAODTrackMapping.h:58
 AliNanoAODTrackMapping.h:59
 AliNanoAODTrackMapping.h:60
 AliNanoAODTrackMapping.h:61
 AliNanoAODTrackMapping.h:62
 AliNanoAODTrackMapping.h:63
 AliNanoAODTrackMapping.h:64
 AliNanoAODTrackMapping.h:65
 AliNanoAODTrackMapping.h:66
 AliNanoAODTrackMapping.h:67
 AliNanoAODTrackMapping.h:68
 AliNanoAODTrackMapping.h:69
 AliNanoAODTrackMapping.h:70
 AliNanoAODTrackMapping.h:71
 AliNanoAODTrackMapping.h:72
 AliNanoAODTrackMapping.h:73
 AliNanoAODTrackMapping.h:74
 AliNanoAODTrackMapping.h:75
 AliNanoAODTrackMapping.h:76
 AliNanoAODTrackMapping.h:77
 AliNanoAODTrackMapping.h:78
 AliNanoAODTrackMapping.h:79
 AliNanoAODTrackMapping.h:80
 AliNanoAODTrackMapping.h:81
 AliNanoAODTrackMapping.h:82
 AliNanoAODTrackMapping.h:83
 AliNanoAODTrackMapping.h:84
 AliNanoAODTrackMapping.h:85
 AliNanoAODTrackMapping.h:86
 AliNanoAODTrackMapping.h:87
 AliNanoAODTrackMapping.h:88
 AliNanoAODTrackMapping.h:89
 AliNanoAODTrackMapping.h:90
 AliNanoAODTrackMapping.h:91
 AliNanoAODTrackMapping.h:92
 AliNanoAODTrackMapping.h:93
 AliNanoAODTrackMapping.h:94
 AliNanoAODTrackMapping.h:95
 AliNanoAODTrackMapping.h:96
 AliNanoAODTrackMapping.h:97
 AliNanoAODTrackMapping.h:98
 AliNanoAODTrackMapping.h:99
 AliNanoAODTrackMapping.h:100
 AliNanoAODTrackMapping.h:101
 AliNanoAODTrackMapping.h:102
 AliNanoAODTrackMapping.h:103
 AliNanoAODTrackMapping.h:104
 AliNanoAODTrackMapping.h:105
 AliNanoAODTrackMapping.h:106
 AliNanoAODTrackMapping.h:107
 AliNanoAODTrackMapping.h:108
 AliNanoAODTrackMapping.h:109
 AliNanoAODTrackMapping.h:110
 AliNanoAODTrackMapping.h:111
 AliNanoAODTrackMapping.h:112
 AliNanoAODTrackMapping.h:113
 AliNanoAODTrackMapping.h:114
 AliNanoAODTrackMapping.h:115
 AliNanoAODTrackMapping.h:116
 AliNanoAODTrackMapping.h:117
 AliNanoAODTrackMapping.h:118
 AliNanoAODTrackMapping.h:119
 AliNanoAODTrackMapping.h:120
 AliNanoAODTrackMapping.h:121
 AliNanoAODTrackMapping.h:122
 AliNanoAODTrackMapping.h:123
 AliNanoAODTrackMapping.h:124
 AliNanoAODTrackMapping.h:125
 AliNanoAODTrackMapping.h:126
 AliNanoAODTrackMapping.h:127
 AliNanoAODTrackMapping.h:128
 AliNanoAODTrackMapping.h:129
 AliNanoAODTrackMapping.h:130
 AliNanoAODTrackMapping.h:131
 AliNanoAODTrackMapping.h:132
 AliNanoAODTrackMapping.h:133
 AliNanoAODTrackMapping.h:134
 AliNanoAODTrackMapping.h:135
 AliNanoAODTrackMapping.h:136
 AliNanoAODTrackMapping.h:137
 AliNanoAODTrackMapping.h:138
 AliNanoAODTrackMapping.h:139
 AliNanoAODTrackMapping.h:140
 AliNanoAODTrackMapping.h:141
 AliNanoAODTrackMapping.h:142
 AliNanoAODTrackMapping.h:143
 AliNanoAODTrackMapping.h:144
 AliNanoAODTrackMapping.h:145
 AliNanoAODTrackMapping.h:146
 AliNanoAODTrackMapping.h:147
 AliNanoAODTrackMapping.h:148
 AliNanoAODTrackMapping.h:149
 AliNanoAODTrackMapping.h:150
 AliNanoAODTrackMapping.h:151
 AliNanoAODTrackMapping.h:152
 AliNanoAODTrackMapping.h:153
 AliNanoAODTrackMapping.h:154
 AliNanoAODTrackMapping.h:155
 AliNanoAODTrackMapping.h:156
 AliNanoAODTrackMapping.h:157
 AliNanoAODTrackMapping.h:158
 AliNanoAODTrackMapping.h:159
 AliNanoAODTrackMapping.h:160
 AliNanoAODTrackMapping.h:161