ROOT logo
///////////////////////////////////////////////////////////////////////////
//                                                                       //
// AliFemtoCoulomb: This is a Coulomb correction class which             //
//  1. Reads in the dat from a file                                      //  
//  2. Performs a linear interpolation in R and creates any array of     //
//     interpolations                                                    //
//  3. Interpolates in eta and returns the Coulomb correction to user    //
//                                                                       //
///////////////////////////////////////////////////////////////////////////

#ifndef ALIFEMTOCOULOMB_H
#define ALIFEMTOCOULOMB_H

#include <stdio.h>
#include "AliFemtoTypes.h"
#include "AliFemtoPair.h"
#include "AliFemtoParticle.h"
#include "TH1D.h"
#include "TH3D.h"

class AliFemtoCoulomb {

public:
  AliFemtoCoulomb();
  AliFemtoCoulomb(const char *readFile, const double& radius, const double& charge);
  AliFemtoCoulomb(const AliFemtoCoulomb& aCoul);
  virtual ~AliFemtoCoulomb();

  AliFemtoCoulomb& operator=(const AliFemtoCoulomb& aCoul);

  void SetRadius(const double& radius);
  double GetRadius() const;
  void SetFile(const char *readFile);
  void SetChargeProduct(const double& charge);

  // These have different names so eta/Qinv don't confuse the compiler
  double CoulombCorrect(const double& eta);
  double CoulombCorrect(const double& eta, const double& radius);
  double CoulombCorrect(const AliFemtoPair* pair);
  double CoulombCorrect(const AliFemtoPair* pair, const double& radius);
  double CoulombCorrect(const double& mass, const double& charge,
		        const double& radius, const double& qInv);
  TH1D* CorrectionHistogram(const double& mass1, const double& mass2, const int& nBins, 
				    const double& low, const double& high);
#ifdef __ROOT__
  TH1D* CorrectionHistogram(const TH1D*, const double);
  TH3D* CorrectionHistogram(const TH3D*, const double);
#endif
private:
  double Eta(const AliFemtoPair* pair);          // Calculates eta
  void CreateLookupTable(const double& radius);  // Creates look-up table
  const char* fFile;                             // File to interpolate corrections from    
  double fRadius;                                // Radius from previous iteration
  double fZ1Z2;                                  // Charge product of particles
  double fEta[1000];                             // interpolated Coulomb correction table
  double fCoulomb[1000];                         // interpolated Coulomb correction table
  int fNLines;                                   // Number of Eta's in lookup-table

#ifdef __ROOT__
  ClassDef(AliFemtoCoulomb, 0)
#endif
};


#endif
 AliFemtoCoulomb.h:1
 AliFemtoCoulomb.h:2
 AliFemtoCoulomb.h:3
 AliFemtoCoulomb.h:4
 AliFemtoCoulomb.h:5
 AliFemtoCoulomb.h:6
 AliFemtoCoulomb.h:7
 AliFemtoCoulomb.h:8
 AliFemtoCoulomb.h:9
 AliFemtoCoulomb.h:10
 AliFemtoCoulomb.h:11
 AliFemtoCoulomb.h:12
 AliFemtoCoulomb.h:13
 AliFemtoCoulomb.h:14
 AliFemtoCoulomb.h:15
 AliFemtoCoulomb.h:16
 AliFemtoCoulomb.h:17
 AliFemtoCoulomb.h:18
 AliFemtoCoulomb.h:19
 AliFemtoCoulomb.h:20
 AliFemtoCoulomb.h:21
 AliFemtoCoulomb.h:22
 AliFemtoCoulomb.h:23
 AliFemtoCoulomb.h:24
 AliFemtoCoulomb.h:25
 AliFemtoCoulomb.h:26
 AliFemtoCoulomb.h:27
 AliFemtoCoulomb.h:28
 AliFemtoCoulomb.h:29
 AliFemtoCoulomb.h:30
 AliFemtoCoulomb.h:31
 AliFemtoCoulomb.h:32
 AliFemtoCoulomb.h:33
 AliFemtoCoulomb.h:34
 AliFemtoCoulomb.h:35
 AliFemtoCoulomb.h:36
 AliFemtoCoulomb.h:37
 AliFemtoCoulomb.h:38
 AliFemtoCoulomb.h:39
 AliFemtoCoulomb.h:40
 AliFemtoCoulomb.h:41
 AliFemtoCoulomb.h:42
 AliFemtoCoulomb.h:43
 AliFemtoCoulomb.h:44
 AliFemtoCoulomb.h:45
 AliFemtoCoulomb.h:46
 AliFemtoCoulomb.h:47
 AliFemtoCoulomb.h:48
 AliFemtoCoulomb.h:49
 AliFemtoCoulomb.h:50
 AliFemtoCoulomb.h:51
 AliFemtoCoulomb.h:52
 AliFemtoCoulomb.h:53
 AliFemtoCoulomb.h:54
 AliFemtoCoulomb.h:55
 AliFemtoCoulomb.h:56
 AliFemtoCoulomb.h:57
 AliFemtoCoulomb.h:58
 AliFemtoCoulomb.h:59
 AliFemtoCoulomb.h:60
 AliFemtoCoulomb.h:61
 AliFemtoCoulomb.h:62
 AliFemtoCoulomb.h:63
 AliFemtoCoulomb.h:64
 AliFemtoCoulomb.h:65