source: Sophya/trunk/ArchTOIPipe/Kernel/piotoiwtr.cc@ 2371

Last change on this file since 2371 was 2369, checked in by aubourg, 22 years ago

PIOlib I/O

File size: 1.5 KB
RevLine 
[2369]1// ArchTOIPipe (C) CEA/DAPNIA/SPP IN2P3/LAL
2// Eric Aubourg
3// Christophe Magneville
4// Reza Ansari
5// $Id: piotoiwtr.cc,v 1.1 2003-04-24 13:22:26 aubourg Exp $
6
7#include "piotoiwtr.h"
8
9extern void fits_lock();
10extern void fits_unlock();
11
12PIOTOIWriter::PIOTOIWriter(string grp, string obj) {
13 group = grp;
14 object = obj;
15 pioGroup = NULL;
16}
17
18PIOTOIWriter::~PIOTOIWriter() {
19}
20
21void PIOTOIWriter::init() {
22 fits_lock();
23 pioGroup = PIOOpenTOI(const_cast<char*>(group.c_str()), "w");
24 int err = PIOCreateTOIObject(const_cast<char*>(object.c_str()),
25 "PIODOUBLE",
26 pioGroup);
27 fits_unlock();
28 bufferSize = 1000;
29 cout << "PIOTOIWriter : opened " << group << endl;
30 declareInput(object); // Un seul, fourni lors de la creation
31}
32
33void PIOTOIWriter::run() {
34 cout << "piotoiwriter run " << group << "[" << object << "] "
35 << snBegin << " " << snEnd << endl;
36
37 double* data = new double[bufferSize];
38 for (int snb = snBegin; snb <= snEnd; snb += bufferSize) {
39 int sne = snb + bufferSize - 1;
40 if (sne > snEnd) sne=snEnd;
41 char command[80];
42 sprintf(command, "Begin=%d; End=%d", snb, sne);
43 getData(0, snb, sne-snb+1, data);
44 fits_lock();
45 PIOLONG tableSize = PIOWriteTOI(data,
46 const_cast<char*>(object.c_str()),
47 "PIODOUBLE",
48 command,
49 pioGroup);
50 fits_unlock();
51 }
52 delete[] data;
53 fits_lock();
54 PIOCloseTOI(pioGroup);
55 fits_unlock();
56}
57
58
59
Note: See TracBrowser for help on using the repository browser.