1 | // ArchTOIPipe (C) CEA/DAPNIA/SPP IN2P3/LAL
|
---|
2 | // Eric Aubourg
|
---|
3 | // Cecile Renault
|
---|
4 | // Christophe Magneville
|
---|
5 | // Reza Ansari
|
---|
6 | // $Id: fitsringwtr.cc,v 1.1 2002-11-28 14:41:12 aubourg Exp $
|
---|
7 |
|
---|
8 | #include "fitsringwtr.h"
|
---|
9 | #include "toimanager.h"
|
---|
10 |
|
---|
11 | extern void fits_lock();
|
---|
12 | extern void fits_unlock();
|
---|
13 |
|
---|
14 | FITSRingWriter::FITSRingWriter(string fn) {
|
---|
15 | fname = fn;
|
---|
16 | fstatus = 0;
|
---|
17 | // Open file
|
---|
18 | remove(fname.c_str());
|
---|
19 | fits_lock();
|
---|
20 | fits_create_file(&fptr,fname.c_str(),&fstatus);
|
---|
21 | fits_unlock();
|
---|
22 | name = "ringwriter";
|
---|
23 | }
|
---|
24 |
|
---|
25 | FITSRingWriter::~FITSRingWriter() {
|
---|
26 | }
|
---|
27 |
|
---|
28 | void FITSRingWriter::setNSamples(long n) {
|
---|
29 | nSamples = n;
|
---|
30 | }
|
---|
31 |
|
---|
32 | void FITSRingWriter::setNRings(long n) {
|
---|
33 | nRings = n;
|
---|
34 | }
|
---|
35 |
|
---|
36 | void FITSRingWriter::setAperture(double a) {
|
---|
37 | aperture = a;
|
---|
38 | }
|
---|
39 |
|
---|
40 | void FITSRingWriter::init() {
|
---|
41 | declareInput("CircTheta");
|
---|
42 | declareInput("CircPhi");
|
---|
43 | declareInput("signal");
|
---|
44 | }
|
---|
45 |
|
---|
46 | void FITSRingWriter::run() {
|
---|
47 | //int snb = getMinIn(); ON IGNORE ICI
|
---|
48 | //int sne = getMaxIn(); ON IGNORE ICI
|
---|
49 |
|
---|
50 | char buf[100];
|
---|
51 |
|
---|
52 | fits_lock();
|
---|
53 | fits_write_date(fptr, &fstatus);
|
---|
54 | fits_create_img(fptr,BYTE_IMG,0,NULL,&fstatus);
|
---|
55 | fits_write_comment(fptr,"ArchTOIPipe FITSRingWriter",&fstatus);
|
---|
56 | strcpy(buf, "RINGSET");
|
---|
57 | fits_write_key(fptr, TSTRING, "PDMTYPE", &buf, "Planck Data Model Type", &fstatus);
|
---|
58 | fits_write_key(fptr, TLONG, "NCIRCLES", &nRings, "Number of rings", &fstatus);
|
---|
59 | fits_unlock();
|
---|
60 |
|
---|
61 | for (int ring = 0; ring<nRings; ring++) {
|
---|
62 | char* ttype = "DATA";
|
---|
63 | char* tform = "1D";
|
---|
64 | char xname[100];
|
---|
65 | sprintf(xname, "CRING_%d", ring);
|
---|
66 | fits_lock();
|
---|
67 | fits_create_tbl(fptr,BINARY_TBL,nSamples,1,&ttype,&tform,NULL,xname,&fstatus);
|
---|
68 | strcpy(buf, "RINGDATA");
|
---|
69 | fits_write_key(fptr, TSTRING, "PDMTYPE", &buf, "Planck Data Model Type", &fstatus);
|
---|
70 | double theta = getData(0, ring*nSamples);
|
---|
71 | fits_write_key(fptr, TDOUBLE, "CIRTHETA", &theta, "Theta angle in radians", &fstatus);
|
---|
72 | double phi = getData(1, ring*nSamples);
|
---|
73 | fits_write_key(fptr, TDOUBLE, "CIRPHI", &phi, "Phi angle in radians", &fstatus);
|
---|
74 | fits_write_key(fptr, TDOUBLE, "CIRAPER", &aperture, "Aperture angle in radians", &fstatus);
|
---|
75 | fits_write_key(fptr, TLONG, "NSAMPLES", &nSamples, "Number of samples on the circle", &fstatus);
|
---|
76 | fits_unlock();
|
---|
77 | for (int i=0; i<nSamples; i++) {
|
---|
78 | double data = getData(2, ring*nSamples+i);
|
---|
79 | fits_lock();
|
---|
80 | fits_write_col(fptr, TDOUBLE, 1,i,1,1, &data, &fstatus);
|
---|
81 | fits_unlock();
|
---|
82 | }
|
---|
83 | fits_lock();
|
---|
84 | fits_close_file(fptr, &fstatus);
|
---|
85 | fits_report_error(stderr, fstatus);
|
---|
86 | fits_unlock();
|
---|
87 | }
|
---|
88 |
|
---|
89 | }
|
---|