source: Sophya/trunk/Poubelle/archTOI.old/galcrosslocator.cc@ 534

Last change on this file since 534 was 534, checked in by ansari, 26 years ago

V2

File size: 4.4 KB
Line 
1// galcrosslocator.cc
2// Eric Aubourg CEA/DAPNIA/SPP octobre 1999
3
4#include "galcrosslocator.h"
5#include "archexc.h"
6#include "archparam.h"
7#include "templocator.h"
8
9#define alphaZenith "alphaZenith"
10#define deltaZenith "deltaZenith"
11#define rotSpeed "rotSpeed"
12#define rotSpeedSample1 "rotSpeedSample1"
13#define rotSpeedSample2 "rotSpeedSample2"
14#define lastCrossSample "lastCrossSample"
15#define nextCrossSample "nextCrossSample"
16#define azimuthFPC "azimuthFPC"
17#define elvFPC "elvFPC"
18#define alphaFPC "alphaFPC"
19#define deltaFPC "deltaFPC"
20#define azimuthBolo "azimuthBolo"
21#define elvBolo "elvBolo"
22#define alphaBolo "alphaBolo"
23#define deltaBolo "deltaBolo"
24
25
26GalCrossLocator::GalCrossLocator() {
27 possibleTOIs.insert(TOI(alphaZenith, TOI::unspec, "", "hours", "galcross0"));
28 possibleTOIs.insert(TOI(deltaZenith, TOI::unspec, "", "degrees", "galcross0"));
29 possibleTOIs.insert(TOI(rotSpeed, TOI::unspec, "", "deg/s", "galcross0"));
30 possibleTOIs.insert(TOI(rotSpeedSample1, TOI::unspec, "", "integer", "galcross0"));
31 possibleTOIs.insert(TOI(rotSpeedSample2, TOI::unspec, "", "integer", "galcross0"));
32 possibleTOIs.insert(TOI(lastCrossSample, TOI::unspec, "", "integer", "galcross0"));
33 possibleTOIs.insert(TOI(lastCrossSample, TOI::unspec, "", "integer", "galcross0"));
34 possibleTOIs.insert(TOI(nextCrossSample, TOI::unspec, "", "integer", "galcross0"));
35 possibleTOIs.insert(TOI(azimuthFPC, TOI::unspec, "", "degrees", "galcross0"));
36 possibleTOIs.insert(TOI(elvFPC, TOI::unspec, "", "degrees", "galcross0"));
37 possibleTOIs.insert(TOI(alphaFPC, TOI::unspec, "", "hours", "galcross0"));
38 possibleTOIs.insert(TOI(deltaFPC, TOI::unspec, "", "degrees", "galcross0"));
39 possibleTOIs.insert(TOI(azimuthBolo, TOI::all, "", "degrees", "galcross0"));
40 possibleTOIs.insert(TOI(elvBolo, TOI::all, "", "degrees", "galcross0"));
41 possibleTOIs.insert(TOI(alphaBolo, TOI::all, "", "hours", "galcross0"));
42 possibleTOIs.insert(TOI(deltaBolo, TOI::all, "", "degrees", "galcross0"));
43}
44
45string GalCrossLocator::getName() {
46 return("GalCrossLocator 1.0");
47}
48
49bool GalCrossLocator::canGetValue(long sampleNum, TOI const&) {
50 int dum;
51 return (tempLocator.getCrossSamples(sampleNum, dum, dum) == 0);
52}
53
54
55double GalCrossLocator::getValue(long sampleNum, TOI const& toi) {
56 if (!canGetValue(sampleNum, toi)) return -1;
57
58 map<TOI, TOIProducer*> m = neededTOIs[toi];
59 double lat, lon, ts;
60
61 for (map<TOI, TOIProducer*>::iterator i = m.begin(); i != m.end(); i++) {
62 TOI inToi = (*i).first;
63 TOIProducer* prod = (*i).second;
64 if (inToi.name == "latitude") lat = prod->getValue(sampleNum, inToi);
65 if (inToi.name == "longitude") lon = prod->getValue(sampleNum, inToi);
66 if (inToi.name == "tsid") ts = prod->getValue(sampleNum, inToi);
67 }
68
69 tempLocator.setEarthPos(lon,lat);
70 tempLocator.setTSid(ts);
71
72 if (toi.name == alphaZenith) return tempLocator.getAlphaZenith();
73 if (toi.name == deltaZenith) return tempLocator.getDeltaZenith();
74 if (toi.name == rotSpeed) return tempLocator.getRotSpeed(sampleNum);
75
76 if (toi.name == azimuthFPC) return tempLocator.getAzimutCenter(sampleNum);
77 if (toi.name == elvFPC) return tempLocator.getElvCenter(sampleNum);
78 if (toi.name == alphaFPC) return tempLocator.getAlphaCenter(sampleNum);
79 if (toi.name == deltaFPC) return tempLocator.getDeltaCenter(sampleNum);
80
81 if (toi.name == azimuthBolo) return tempLocator.getAzimutBolo(sampleNum, toi.index);
82 if (toi.name == elvBolo) return tempLocator.getElvBolo(sampleNum, toi.index);
83 if (toi.name == alphaBolo) return tempLocator.getAlphaBolo(sampleNum, toi.index);
84 if (toi.name == deltaBolo) return tempLocator.getDeltaBolo(sampleNum, toi.index);
85
86 if (toi.name == lastCrossSample || toi.name == rotSpeedSample1) {
87 int SN1, SN2;
88 tempLocator.getCrossSamples(sampleNum, SN1, SN2);
89 return SN1;
90 }
91 if (toi.name == nextCrossSample || toi.name == rotSpeedSample2) {
92 int SN1, SN2;
93 tempLocator.getCrossSamples(sampleNum, SN1, SN2);
94 return SN2;
95 }
96
97 return -1;
98}
99
100
101set<TOI> GalCrossLocator::reqTOIFor(TOI const&) {
102 set<TOI> t;
103 t.insert(TOI("latitude", TOI::unspec, "interp"));
104 t.insert(TOI("longitude", TOI::unspec, "interp"));
105 t.insert(TOI("tsid", TOI::unspec));
106 return t;
107}
108
109
110
111
112
113
114
Note: See TracBrowser for help on using the repository browser.