source: trunk/Mars/hawc/processing/currents.C@ 20029

Last change on this file since 20029 was 20027, checked in by tbretz, 4 years ago
Added.
File size: 4.0 KB
Line 
1
2
3void currents(const char *fname, double beg=0, double end=100000)
4{
5 fits file(fname);
6
7 //file.PrintColumns();
8 //file.PrintKeys();
9
10 Double_t time;
11 Double_t jd;
12
13 float Imon[64];
14 float Tmon[64];
15 float Umon[64];
16 float Tpsu[2];
17 file.SetPtrAddress("Time", &time);
18 file.SetPtrAddress("Imon", Imon);
19 file.SetPtrAddress("Tmon", Tmon);
20 file.SetPtrAddress("Vmon", Umon);
21 file.SetPtrAddress("Tpsu", Tpsu);
22
23 UInt_t offset = file.GetUInt("MJDREF");
24 if (beg < 30000)
25 beg+=offset;
26 if (end < 30000)
27 end+=offset;
28
29 double AvgUmed = 0;
30 double AvgTmed = 0;
31 double AvgImed = 0;
32 double AvgUavg = 0;
33 double AvgTavg = 0;
34 double AvgIavg = 0;
35 double AvgUrms = 0;
36 double AvgTrms = 0;
37 double AvgIrms = 0;
38 double AvgUdev = 0;
39 double AvgTdev = 0;
40 double AvgIdev = 0;
41 double AvgPsu = 0;
42/*
43 double RmsUmed = 0;
44 double RmsTmed = 0;
45 double RmsImed = 0;
46 double RmsUavg = 0;
47 double RmsTavg = 0;
48 double RmsIavg = 0;
49 double RmsUrms = 0;
50 double RmsTrms = 0;
51 double RmsIrms = 0;
52 double RmsPsu = 0;
53*/
54 int count = 0;
55
56 double Umed = 0;
57 double Tmed = 0;
58 double Imed = 0;
59 double Udev = 0;
60 double Tdev = 0;
61 double Idev = 0;
62 double Uavg = 0;
63 double Tavg = 0;
64 double Iavg = 0;
65 double Urms = 0;
66 double Trms = 0;
67 double Irms = 0;
68
69 double psu = 0;
70
71 double diff = -1;
72
73 while (file.GetNextRow())
74 {
75 time += offset;
76 jd = time + 2400000.5;
77
78 if (time>end)
79 break;
80
81 Udev = MMath::MedianDev(64, Umon, Umed);
82 Tdev = MMath::MedianDev(64, Tmon, Tmed);
83 Idev = MMath::MedianDev(64, Imon, Imed);
84 Uavg = TMath::Mean(64, Umon);
85 Tavg = TMath::Mean(64, Tmon);
86 Iavg = TMath::Mean(64, Imon);
87 Urms = TMath::RMS(64, Umon);
88 Trms = TMath::RMS(64, Tmon);
89 Irms = TMath::RMS(64, Imon);
90
91 psu = (Tpsu[0]+Tpsu[1])/2;
92
93 if (time<beg)
94 {
95 diff = beg-time;
96 continue;
97 }
98
99 AvgUmed += Umed;
100 AvgTmed += Tmed;
101 AvgImed += Imed;
102 AvgUavg += Uavg;
103 AvgTavg += Tavg;
104 AvgIavg += Iavg;
105 AvgUrms += Urms;
106 AvgTrms += Trms;
107 AvgIrms += Irms;
108 AvgUdev += Udev;
109 AvgTdev += Tdev;
110 AvgIdev += Idev;
111 AvgPsu += psu;
112
113 count ++;
114 }
115
116 if (count==0)
117 {
118 if (diff<5./24/3600)
119 {
120 cout << "result";
121 cout << " NULL";
122 cout << " NULL";
123 cout << " NULL";
124 cout << " NULL";
125 cout << " NULL";
126 cout << " NULL";
127 cout << " NULL";
128 cout << " NULL";
129 cout << " NULL";
130 cout << " NULL";
131 cout << " NULL";
132 cout << " NULL";
133 cout << " NULL";
134 cout << endl;
135 return;
136 }
137
138 cout << "result";
139 cout << " " << Umed;
140 cout << " " << Uavg;
141 cout << " " << Udev;
142 cout << " " << Urms;
143
144 cout << " " << Imed;
145 cout << " " << Iavg;
146 cout << " " << Idev;
147 cout << " " << Irms;
148
149 cout << " " << Tmed;
150 cout << " " << Tavg;
151 cout << " " << Tdev;
152 cout << " " << Trms;
153
154 cout << " " << psu;
155 cout << endl;
156 return;
157 }
158
159 AvgUmed /= count;
160 AvgImed /= count;
161 AvgTmed /= count;
162
163 AvgUavg /= count;
164 AvgIavg /= count;
165 AvgTavg /= count;
166
167 AvgUrms /= count;
168 AvgIrms /= count;
169 AvgTrms /= count;
170
171 AvgUdev /= count;
172 AvgIdev /= count;
173 AvgTdev /= count;
174
175 AvgPsu /= count;
176
177
178 cout << "result";
179 cout << " " << AvgUmed;
180 cout << " " << AvgUavg;
181 cout << " " << AvgUdev;
182 cout << " " << AvgUrms;
183
184 cout << " " << AvgImed;
185 cout << " " << AvgIavg;
186 cout << " " << AvgIdev;
187 cout << " " << AvgIrms;
188
189 cout << " " << AvgTmed;
190 cout << " " << AvgTavg;
191 cout << " " << AvgTdev;
192 cout << " " << AvgTrms;
193
194 cout << " " << AvgPsu;
195
196 cout << endl;
197}
Note: See TracBrowser for help on using the repository browser.