more secure string operations
[u/mrichter/AliRoot.git] / TPC / AliTPCGoofieValues.h
1 /*!\class AliTPCGoofieValues
2    \brief TPC calibration class for Goofie values 
3
4    Header: AliTPCGoofieValues.h,v 2.0.
5
6    Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved.
7
8    See cxx source for full Copyright notice 
9
10    TPC Calibration Class for GOOFIE values. Drift velocity, gas composition and the gain. 
11
12    The class AliTPCGoofieValues allows the access to GoofieValues. 
13
14    The only constructor is loading data from ASCI file. 
15
16    The methods make Tgraphs and TSplines of the time dependence of the values. 
17
18    One method allows save the the graphs and spline togather with tree of allvalues into file.        
19
20 */
21
22
23 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
24  * See cxx source for full Copyright notice                               */
25
26
27 ///////////////////////////////////////////////////////////////////////////////
28 //                                                                           //
29 //  TPC calibration class for Goofie values                                  //
30 //                                                                           //
31 ///////////////////////////////////////////////////////////////////////////////
32
33
34 #include "TSystem.h"
35 #include "TString.h"
36 #include "TChain.h"
37 #include "TFile.h"
38 #include "TTimeStamp.h"
39 #include "TGraph.h"
40 #include "TTree.h"
41 #include "TSpline.h"
42
43 class AliTPCGoofieValues : public TNamed{
44 public:
45   AliTPCGoofieValues(); ///< default ctor
46   //AliTPCGoofieValues(const char *fname); ///< ctor using log file, not implemented
47   AliTPCGoofieValues(const char *fname); ///< ctor using an ASCII file
48   virtual ~AliTPCGoofieValues();///< default dtor
49   
50   
51   Long64_t GetLinesInFile();///< return lines in ASCII file 
52   Double_t GetStartTime();///< return StartTime
53   Double_t GetEndTime();///< return EndTime
54   Double_t GetTimeOfRun();///< return TimeOfRun
55   Double_t GetTempGrad(Double_t timeSec);///< return TempGrad
56   
57   Double_t EvalTempGrad(Double_t timeSec);///< evaluate temperature gradients for a certain time in seconds
58   Double_t EvalAverageTemp(Double_t timeSec);///< evaluate average temperatures for a certain time in seconds
59   Double_t EvalPress(Double_t timeSec);///< evaluate pressure for a certain time in seconds
60   Double_t EvalVdrift(Double_t timeSec);///< evaluate  drift velocities for a certain time in seconds
61   Double_t EvalVdriftcor(Double_t timeSec);///< evaluate drift velocities corrected for a certain time in seconds
62   Double_t EvalGainF(Double_t timeSec);///< evaluate near gain for a certain time in seconds
63   Double_t EvalGainN(Double_t timeSec);///< evaluate far gain for a certain time in seconds
64   Double_t EvalCO2(Double_t timeSec);///< evaluate  CO2 content for a certain time in seconds
65   Double_t EvalN2(Double_t timeSec);///< evaluate  N2 content for a certain time in seconds
66   
67   void FillAllGraphs();  ///< fill all the graphs after the tree
68   void FillAllSplines();  ///< fill all the graphs after the splines
69   
70   void FillAverageTempGraph();///<graph of average temperatures 
71   void FillTempGradGraph();///<graph of temperature gradients
72   void FillPressGraph();///<graph of pressures
73   void FillVdriftGraph();///<graph of drift velocities
74   void FillVdriftcorGraph();///<graph of drift velocities corrected
75   void FillGainFGraph();///<graph of near gain
76   void FillGainNGraph();///<graph of far gain
77   void FillCO2Graph();///<graph of CO2 content
78   void FillN2Graph();///<graph of N2 content
79   
80   void FillAverageTempSpline();///< spline of average temperatures 
81   void FillTempGradSpline();///<spline of  temperature gradients
82   void FillPressSpline();///<spline of pressures
83   void FillVdriftSpline();///<spline of drift velocities
84   void FillVdriftcorSpline();///<spline of drift velocities corrected
85   void FillGainFSpline();///<spline of near gain
86   void FillGainNSpline();///<spline of far gain
87   void FillCO2Spline();///<spline of CO2 content
88   void FillN2Spline();///<spline of  N2 content
89   TTree * GetTree(){return fGoofieValues;}
90   void PrintTree(); ///< test: print tree values onto screen
91   Bool_t    IsFolder() const {return kTRUE;}
92 protected:
93   Long64_t fLinesInFile;// lines in ASCII file
94   Double_t fStartTime;// StartTime
95   Double_t fEndTime;// EndTime
96   Double_t fTimeOfRun;//TimeOfRun
97   Double_t fTempGrad;//TempGrad
98   
99   TGraph* fAverageTempGraph;//->graph of average temperatures 
100   TGraph* fTempGradGraph;//->graph of temperature gradients
101   TGraph* fPressGraph;//->graph of pressures
102   TGraph* fVdriftGraph;//->graph of drift velocities
103   TGraph* fVdriftcorGraph;//->graph of drift velocities corrected
104   TGraph* fGainFGraph;//->graph of near gain
105   TGraph* fGainNGraph;//->graph of far gain
106   TGraph* fCO2Graph;//->graph of CO2 content
107   TGraph* fN2Graph;//->graph of N2 content
108   
109   TSpline* fAverageTempSpline;// spline of average temperatures 
110   TSpline* fTempGradSpline;//spline of  temperature gradients
111   TSpline* fPressSpline;//spline of pressures
112   TSpline* fVdriftSpline;//spline of drift velocities
113   TSpline* fVdriftcorSpline;//spline of drift velocities corrected
114   TSpline* fGainFSpline;//spline of near gain
115   TSpline* fGainNSpline;//spline of far gain
116   TSpline* fCO2Spline;//spline of CO2 content
117   TSpline* fN2Spline;//spline of  N2 content
118   
119 protected:
120   TTree *fGoofieValues;   // tree with all Goofie values in branches
121
122 private:
123   AliTPCGoofieValues(const AliTPCGoofieValues&); // Not implemented
124   AliTPCGoofieValues& operator=(const AliTPCGoofieValues&); // Not implemented
125
126   
127   ClassDef(AliTPCGoofieValues,1)  //Basic ROOT object
128 };