StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StHbtCoulomb.h
1 /***************************************************************************
2  *
3  * $Id: StHbtCoulomb.h,v 1.12 2000/10/26 19:48:54 rcwells Exp $
4  *
5  * Author: Randy Wells, Ohio State, rcwells@mps.ohio-state.edu
6  ***************************************************************************
7  *
8  * Description: part of STAR HBT Framework: StHbtMaker package
9  * This is a Coulomb correction class which
10  * 1. Reads in the dat from a file
11  * 2. Performs a linear interpolation in R and creates any array of interpolations
12  * 3. Interpolates in eta and returns the Coulomb correction to user
13  *
14  ***************************************************************************
15  *
16  * $Log: StHbtCoulomb.h,v $
17  * Revision 1.12 2000/10/26 19:48:54 rcwells
18  * Added functionality for Coulomb correction of <qInv> in 3D correltions
19  *
20  * Revision 1.11 2000/08/02 01:25:12 lisa
21  * Add Coulomb correction capability to 3D Bertsch-Pratt CorrFctn
22  *
23  * Revision 1.10 2000/07/16 21:38:22 laue
24  * StHbtCoulomb.cxx StHbtSectoredAnalysis.cxx : updated for standalone version
25  * StHbtV0.cc StHbtV0.hh : some cast to prevent compiling warnings
26  * StHbtParticle.cc StHbtParticle.hh : pointers mTrack,mV0 initialized to 0
27  * StHbtIOBinary.cc : some printouts in #ifdef STHBTDEBUG
28  * StHbtEvent.cc : B-Field set to 0.25Tesla, we have to think about a better
29  * solution
30  *
31  * Revision 1.9 2000/05/31 20:12:53 rcwells
32  * Modified StHbtCoulomb for Id and Log entries
33  *
34  *
35  **************************************************************************/
36 
37 #ifndef StHbtCoulomb_HH
38 #define StHbtCoulomb_HH
39 
40 #include <stdio.h>
41 #include "StHbtMaker/Infrastructure/StHbtTypes.hh"
42 #include "StHbtMaker/Infrastructure/StHbtPair.hh"
43 #include "StHbtMaker/Infrastructure/StHbtParticle.hh"
44 
45 class StHbtCoulomb {
46 
47 public:
48  StHbtCoulomb();
49  StHbtCoulomb(const char *readFile, const double& radius, const double& charge);
50  virtual ~StHbtCoulomb();
51 
52  void SetRadius(const double& radius);
53  double GetRadius();
54  void SetFile(const char *readFile);
55  void SetChargeProduct(const double& charge);
56 
57  // These have different names so eta/Qinv don't confuse the compiler
58  double CoulombCorrect(const double& eta);
59  double CoulombCorrect(const double& eta, const double& radius);
60  double CoulombCorrect(const StHbtPair* pair);
61  double CoulombCorrect(const StHbtPair* pair, const double& radius);
62  double CoulombCorrect(const double& mass, const double& charge,
63  const double& radius, const double& qInv);
64  StHbt1DHisto* CorrectionHistogram(const double& mass1, const double& mass2, const int& nBins,
65  const double& low, const double& high);
66 #ifdef __ROOT__
67  StHbt1DHisto* CorrectionHistogram(const StHbt1DHisto*, const double);
68  StHbt3DHisto* CorrectionHistogram(const StHbt3DHisto*, const double);
69 #endif
70 private:
71  double Eta(const StHbtPair* pair); // Calculates eta
72  void CreateLookupTable(const double& radius); // Creates look-up table
73  const char* mFile; // File to interpolate corrections from
74  double mRadius; // Radius from previous iteration
75  double mZ1Z2; // Charge product of particles
76  double mEta[1000]; // interpolated Coulomb correction table
77  double mCoulomb[1000]; // interpolated Coulomb correction table
78  int mNLines; // Number of Eta's in lookup-table
79 
80 #ifdef __ROOT__
81  ClassDef(StHbtCoulomb, 0)
82 #endif
83 };
84 
85 
86 #endif