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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.11 - (hide 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 mocchiut 1.1 /**
2     * \file CaloFranzini.h
3     * \author Emiliano Mocchiutti (2007/12/03)
4     */
5     #ifndef calofranzini_h
6     #define calofranzini_h
7    
8 mocchiut 1.3 #include <iostream>
9 mocchiut 1.1
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 mocchiut 1.5 #include <TMatrixF.h>
21 mocchiut 1.1 #include <TArrayI.h>
22     #include <TArrayF.h>
23 mocchiut 1.3 #include <TStyle.h>
24     #include <TCanvas.h>
25     #include <TStyle.h>
26     #include <TH1F.h>
27 mocchiut 1.8 #include <TF1.h>
28     #include <TGraph.h>
29 mocchiut 1.7 #include <TDecompSVD.h>
30 mocchiut 1.3 //
31 mocchiut 1.1
32 mocchiut 1.3 #include <PamLevel2.h>
33 mocchiut 1.1
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 mocchiut 1.8 TFile *lfile;
47     TFile *ffile;
48 mocchiut 1.1 Int_t nbin;
49     TArrayF *brig;
50 mocchiut 1.4 TArrayF *brigm;
51     TArrayF *qplmean[17];
52     TMatrixD *hmat[17];
53 mocchiut 1.8 TMatrixD *hfmat[17];
54 mocchiut 1.5 TMatrixD *fqplmean[17];
55 mocchiut 1.3 Int_t N;
56     Int_t NC;
57 mocchiut 1.1 //
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 mocchiut 1.3 Float_t qplane[43];
66     Bool_t sel;
67     Bool_t cont;
68 mocchiut 1.5 Bool_t crig;
69 mocchiut 1.1 //
70 mocchiut 1.11 Bool_t usepl18x;
71     //
72 mocchiut 1.3 Int_t mask18b;
73 mocchiut 1.1 Bool_t dofull;
74     Bool_t dolong;
75     Int_t degfre;
76 mocchiut 1.8 Int_t fdegfre;
77 mocchiut 1.1 //
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 mocchiut 1.8 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 mocchiut 1.1
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 mocchiut 1.8
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 mocchiut 1.3 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 mocchiut 1.2 Int_t GetDegreeOfFreedom(){return degfre;};
117 mocchiut 1.8 Int_t GetLongDegreeOfFreedom(){return degfre;};
118     Int_t GetFullDegreeOfFreedom(){return fdegfre;};
119 mocchiut 1.2 //
120 mocchiut 1.6 TArrayF *LoadLongAverage(Float_t rig);
121 mocchiut 1.1 TMatrixD *LoadCovarianceMatrix(Float_t rig);
122     //
123 mocchiut 1.4 Float_t GetAverageAt(Int_t plane, Float_t rig);
124     Float_t GetHmatrixAt(Int_t i, Int_t j, Float_t rig);
125     //
126 mocchiut 1.5 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 mocchiut 1.6 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 mocchiut 1.8 Float_t GetFullHmatrixAt(Int_t i, Int_t j, Float_t rig, Int_t rigbin, Int_t mtherig);
131 mocchiut 1.5 //
132 mocchiut 1.1 Bool_t Open(TString matrixfile);
133 mocchiut 1.8 Bool_t Open(TString longmatrixfile,TString fullmatrixfile);
134 mocchiut 1.4 Bool_t LoadBin();
135 mocchiut 1.8 Bool_t LoadBin(Bool_t full);
136 mocchiut 1.5 Bool_t LoadLong();
137     Bool_t LoadFull();
138 mocchiut 1.4 Bool_t LoadMatrices();
139 mocchiut 1.5 Bool_t LoadFullMatrices();
140 mocchiut 1.8 TFile *GetFile(){return lfile;};
141     TFile *GetLongFile(){return lfile;};
142     TFile *GetFullFile(){return ffile;};
143 mocchiut 1.1 //
144 mocchiut 1.6 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 mocchiut 1.10 // void LoadFullMatrix(Int_t rigbin, TMatrixF *&fmatri);
150     void LoadFullMatrix(Int_t rigbin, TMatrixF *fmatri);
151 mocchiut 1.6 TMatrixF *LoadFullNMatrix(Int_t rigbin);
152     void UnLoadFullMatrix(Int_t rigbin);
153     void UnLoadFullNMatrix(Int_t rigbin);
154     //
155 mocchiut 1.7 Int_t ConvertStrip(Int_t mstrip);
156     //
157 mocchiut 1.1 Bool_t CreateMatrixFile(TString matrixfile);
158 mocchiut 1.4 Bool_t UpdateMatrixFile(TString matrixfile);
159 mocchiut 1.1 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 mocchiut 1.7 void WriteFullMatrix(TMatrixD *matrix, Int_t bin);
164 mocchiut 1.6 void WriteFullNMatrix(TMatrixF *matrix, Int_t bin);
165 mocchiut 1.5 void WriteFullMean(TMatrixD *matrix, Int_t bin);
166 mocchiut 1.6 void WriteFullNMean(TMatrixD *matrix, Int_t bin);
167 mocchiut 1.3 void WriteInvertedLongMatrix(TMatrixD matrix, Int_t bin);
168 mocchiut 1.7 void WriteInvertedFullMatrix(TMatrixD matrix, Int_t bin);
169 mocchiut 1.1 void CloseMatrixFile();
170     //
171 mocchiut 1.8 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 mocchiut 1.1 void SetDebug(Bool_t d){ debug=d; };
176 mocchiut 1.3 void SetNoWpreSampler(Int_t n);
177     void SetNoWcalo(Int_t n);
178 mocchiut 1.9 void SplitInto(Int_t NoWpreSampler, Int_t NoWcalo);
179 mocchiut 1.3 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 mocchiut 1.5 void DrawLongAverage(Int_t bin);
183     void UseCaloRig(){crig=true;};
184 mocchiut 1.1 //
185 mocchiut 1.11 void UsePlane18X(Bool_t use){usepl18x = use;};
186     //
187     //
188 mocchiut 1.1 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