/[PAMELA software]/calo/flight/CaloFranzini/inc/CaloFranzini.h
ViewVC logotype

Contents of /calo/flight/CaloFranzini/inc/CaloFranzini.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.11 - (show annotations) (download)
Mon Dec 14 14:35:51 2009 UTC (14 years, 11 months ago) by mocchiut
Branch: MAIN
Changes since 1.10: +5 -0 lines
File MIME type: text/plain
Do not use plane 18x by default

1 /**
2 * \file CaloFranzini.h
3 * \author Emiliano Mocchiutti (2007/12/03)
4 */
5 #ifndef calofranzini_h
6 #define calofranzini_h
7
8 #include <iostream>
9
10 #include <TTree.h>
11 #include <TFriendElement.h>
12 #include <TChain.h>
13 #include <TFile.h>
14 #include <TList.h>
15 #include <TKey.h>
16 #include <TSystemFile.h>
17 #include <TSystemDirectory.h>
18 #include <TSQLServer.h>
19 #include <TMatrixD.h>
20 #include <TMatrixF.h>
21 #include <TArrayI.h>
22 #include <TArrayF.h>
23 #include <TStyle.h>
24 #include <TCanvas.h>
25 #include <TStyle.h>
26 #include <TH1F.h>
27 #include <TF1.h>
28 #include <TGraph.h>
29 #include <TDecompSVD.h>
30 //
31
32 #include <PamLevel2.h>
33
34 using namespace std;
35
36 /**
37 *
38 * Class to store and calculate variables useful for analysis with the Franzini method
39 */
40 class CaloFranzini : public TObject {
41
42 private:
43 //
44 PamLevel2 *L2;
45 Bool_t debug;
46 TFile *lfile;
47 TFile *ffile;
48 Int_t nbin;
49 TArrayF *brig;
50 TArrayF *brigm;
51 TArrayF *qplmean[17];
52 TMatrixD *hmat[17];
53 TMatrixD *hfmat[17];
54 TMatrixD *fqplmean[17];
55 Int_t N;
56 Int_t NC;
57 //
58 // needed to avoid reprocessing the same event over and over to obtain the variables;
59 //
60 UInt_t OBT;
61 UInt_t PKT;
62 UInt_t atime;
63 Int_t sntr;
64 Float_t estrip[2][22][96];
65 Float_t qplane[43];
66 Bool_t sel;
67 Bool_t cont;
68 Bool_t crig;
69 //
70 Bool_t usepl18x;
71 //
72 Int_t mask18b;
73 Bool_t dofull;
74 Bool_t dolong;
75 Int_t degfre;
76 Int_t fdegfre;
77 //
78 Float_t longtzeta; ///< longitudinal covariance parameter used for event selection
79 Float_t fulltzeta; ///< full calorimeter covariance parameter used for event selection
80 //
81 Float_t negfulltzeta;
82 Float_t posfulltzeta;
83 Float_t minsvalue;
84 Float_t maxsvalue;
85 Float_t aveposvar;
86 Float_t avenegvar;
87 Int_t numneg;
88 Int_t numpos;
89 //
90
91 public:
92 //
93 CaloFranzini();
94 CaloFranzini(PamLevel2 *L2);
95 ~CaloFranzini(){ Delete(); };
96 //
97 Float_t GetLongTZeta(){Process(); return longtzeta;}; ///< Returns longitudinal covariance parameter used for event selection
98 Float_t GetFullTZeta(){Process(); return fulltzeta;}; ///< Returns full calorimeter covariance parameter used for event selection
99 //
100 Float_t GetNormLongTZeta(); ///< Returns longitudinal covariance parameter used for event selection
101 Float_t GetNormFullTZeta(); ///< Returns full calorimeter covariance parameter used for event selection
102 //
103
104 Float_t GetFullPositive(){Process(); return posfulltzeta;};
105 Float_t GetFullNegative(){Process(); return negfulltzeta;};
106 Int_t GetFullNumPositive(){Process(); return numpos;};
107 Int_t GetFullNumNegative(){Process(); return numneg;};
108 Float_t GetFullMaxVar(){Process(); return maxsvalue;};
109 Float_t GetFullMinVar(){Process(); return minsvalue;};
110 Float_t GetFullAveragePosVar(){Process(); return aveposvar;};
111 Float_t GetFullAverageNegVar(){Process(); return avenegvar;};
112
113 //
114 void Selection(){sel = true; cont = false;}; ///< Set selection mode: planes from 1 to 22-N are used, plane 18 - N is masked if "emulate18" variable is true (DEFAULT);
115 void Contamination(){sel = false; cont = true;}; ///< Set contamination mode: planes from N to 22 are used.
116 Int_t GetDegreeOfFreedom(){return degfre;};
117 Int_t GetLongDegreeOfFreedom(){return degfre;};
118 Int_t GetFullDegreeOfFreedom(){return fdegfre;};
119 //
120 TArrayF *LoadLongAverage(Float_t rig);
121 TMatrixD *LoadCovarianceMatrix(Float_t rig);
122 //
123 Float_t GetAverageAt(Int_t plane, Float_t rig);
124 Float_t GetHmatrixAt(Int_t i, Int_t j, Float_t rig);
125 //
126 Float_t GetFullAverageAt(Int_t plane, Int_t strip, Float_t rig);
127 Float_t GetFullHmatrixAt(Int_t i, Int_t j, Float_t rig);
128 Float_t GetFullAverageAt(Int_t plane, Int_t strip, Float_t rig, Int_t rigbin);
129 Float_t GetFullHmatrixAt(Int_t i, Int_t j, Float_t rig, Int_t rigbin);
130 Float_t GetFullHmatrixAt(Int_t i, Int_t j, Float_t rig, Int_t rigbin, Int_t mtherig);
131 //
132 Bool_t Open(TString matrixfile);
133 Bool_t Open(TString longmatrixfile,TString fullmatrixfile);
134 Bool_t LoadBin();
135 Bool_t LoadBin(Bool_t full);
136 Bool_t LoadLong();
137 Bool_t LoadFull();
138 Bool_t LoadMatrices();
139 Bool_t LoadFullMatrices();
140 TFile *GetFile(){return lfile;};
141 TFile *GetLongFile(){return lfile;};
142 TFile *GetFullFile(){return ffile;};
143 //
144 TMatrixD *LoadFullAverage(Int_t rigbin);
145 TMatrixD *LoadFullNAverage(Int_t rigbin);
146 void UnLoadFullAverage(Int_t rigbin);
147 void UnLoadFullNAverage(Int_t rigbin);
148 TMatrixF *LoadFullMatrix(Int_t rigbin);
149 // void LoadFullMatrix(Int_t rigbin, TMatrixF *&fmatri);
150 void LoadFullMatrix(Int_t rigbin, TMatrixF *fmatri);
151 TMatrixF *LoadFullNMatrix(Int_t rigbin);
152 void UnLoadFullMatrix(Int_t rigbin);
153 void UnLoadFullNMatrix(Int_t rigbin);
154 //
155 Int_t ConvertStrip(Int_t mstrip);
156 //
157 Bool_t CreateMatrixFile(TString matrixfile);
158 Bool_t UpdateMatrixFile(TString matrixfile);
159 void WriteNumBin(Int_t numbin);
160 void WriteRigBin(TArrayF *rigbin);
161 void WriteLongMean(TArrayF *qpl, Int_t bin);
162 void WriteLongMatrix(TMatrixD *matrix, Int_t bin);
163 void WriteFullMatrix(TMatrixD *matrix, Int_t bin);
164 void WriteFullNMatrix(TMatrixF *matrix, Int_t bin);
165 void WriteFullMean(TMatrixD *matrix, Int_t bin);
166 void WriteFullNMean(TMatrixD *matrix, Int_t bin);
167 void WriteInvertedLongMatrix(TMatrixD matrix, Int_t bin);
168 void WriteInvertedFullMatrix(TMatrixD matrix, Int_t bin);
169 void CloseMatrixFile();
170 //
171 void CalculateLongTZeta(){ dolong=true; };
172 void CalculateFullTZeta(){ dofull=true; };
173 void CalculateLongTZeta(Bool_t bo){ dolong=bo; };
174 void CalculateFullTZeta(Bool_t bo){ dofull=bo; };
175 void SetDebug(Bool_t d){ debug=d; };
176 void SetNoWpreSampler(Int_t n);
177 void SetNoWcalo(Int_t n);
178 void SplitInto(Int_t NoWpreSampler, Int_t NoWcalo);
179 Int_t GetNoWpreSampler(){return N;}; ///< Get the number of W planes used as presampler.
180 Int_t GetNoWcalo(){return NC;}; ///< Get the number of W planes used as calorimeter.
181 void DrawLongAverage(Float_t rig);
182 void DrawLongAverage(Int_t bin);
183 void UseCaloRig(){crig=true;};
184 //
185 void UsePlane18X(Bool_t use){usepl18x = use;};
186 //
187 //
188 void Clear();
189 void Clear(Option_t *option){Clear();};
190 void Delete();
191 void Delete(Option_t *option){Delete();};
192 //
193 void Process(Int_t ntrack); ///< Process data track number ntrack
194 void Process(); ///< Process data
195 void Print();
196 void Print(Option_t *option){Print();};
197 //
198 ClassDef(CaloFranzini,1);
199 };
200
201 #endif
202

  ViewVC Help
Powered by ViewVC 1.1.23