Ignore:
Timestamp:
04/24/12 13:57:18 (13 years ago)
Author:
kraehenb
Message:
Use arrays with dynamic memory instead of vectors.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • fact/tools/pyscripts/sandbox/kraehenb/calfits.h

    r13416 r13426  
    6666       
    6767        //Calibration variables
    68         vector<float> calib_baselinemean;
    69         vector<float> calib_gainmean;
    70         vector<float> calib_triggeroffsetmean;
     68        float* calib_baselinemean;
     69        float* calib_gainmean;
     70        float* calib_triggeroffsetmean;
    7171        //ToDo: use arrays of size 1440x1024 (x2 for wrap-arounds) and read all variables into those
    7272       
     
    7474        UInt_t event_id;
    7575        UShort_t event_triggertype;
    76         vector<int16_t> event_data;
    77         vector<int16_t> event_offset;
    78         vector<int32_t> event_boardtimes;
    79         vector<float> event_caldata; //Vector for calibrated event
     76        int16_t* event_data;
     77        int16_t* event_offset;
     78        int32_t* event_boardtimes;
    8079        double* npcaldata;
    8180       
     
    118117                //Read the calibration data
    119118//              std::cout << "...Reading calibration data..." << std::endl;
    120                 calib_baselinemean.resize(calibfile.GetN("BaselineMean"),0);
    121                 calibfile.SetVecAddress("BaselineMean", calib_baselinemean);
    122                 calib_gainmean.resize(calibfile.GetN("GainMean"),0);
    123                 calibfile.SetVecAddress("GainMean", calib_gainmean);
    124                 calib_triggeroffsetmean.resize(calibfile.GetN("TriggerOffsetMean"),0);
    125                 calibfile.SetVecAddress("TriggerOffsetMean", calib_triggeroffsetmean);
     119                calib_baselinemean = new float[calibfile.GetN("BaselineMean")];
     120                calibfile.SetPtrAddress("BaselineMean", calib_baselinemean, calibfile.GetN("BaselineMean"));
     121                calib_gainmean = new float[calibfile.GetN("GainMean")];
     122                calibfile.SetPtrAddress("GainMean", calib_gainmean, calibfile.GetN("GainMean"));
     123                calib_triggeroffsetmean = new float[calibfile.GetN("TriggerOffsetMean")];
     124                calibfile.SetPtrAddress("TriggerOffsetMean", calib_triggeroffsetmean, calibfile.GetN("TriggerOffsetMean"));
    126125                calibfile.GetRow(0);
    127126               
     
    131130                datafile.SetRefAddress("TriggerType", event_triggertype);
    132131               
    133                 event_data.resize(data_ndata,0);
    134                 event_caldata.resize(data_ndata,0);
    135                 datafile.SetVecAddress("Data", event_data);
     132                event_data = new int16_t[data_ndata];
     133                datafile.SetPtrAddress("Data", event_data, data_ndata);
    136134               
    137                 event_offset.resize(datafile.GetN("StartCellData"),0);
    138                 datafile.SetVecAddress("StartCellData", event_offset);
     135                event_offset = new int16_t[datafile.GetN("StartCellData")];
     136                datafile.SetPtrAddress("StartCellData", event_offset, datafile.GetN("StartCellData"));
    139137               
    140                 event_boardtimes.resize(datafile.GetN("BoardTime"),0);
    141                 datafile.SetVecAddress("BoardTime", event_boardtimes);
     138                event_boardtimes = new int32_t[datafile.GetN("BoardTime")];
     139                datafile.SetPtrAddress("BoardTime", event_boardtimes, datafile.GetN("BoardTime"));
     140        }
     141       
     142        ~CalFits()
     143        {
     144                delete[] calib_baselinemean;
     145                delete[] calib_gainmean;
     146                delete[] calib_triggeroffsetmean;
     147                delete[] event_data;
     148                delete[] event_offset;
     149                delete[] event_boardtimes;
    142150        }
    143151       
     
    164172                                        drs_calib_offset = (slice+event_offset[pixel])%calib_blm_size;
    165173                                        npcaldata[pixel*data_nroi+slice] = double((event_data[pixel*data_nroi+slice]*2000./4096.-calib_baselinemean[pixel*calib_blm_size+drs_calib_offset]-calib_triggeroffsetmean[pixel*data_nroi+slice])/calib_gainmean[pixel*calib_blm_size+drs_calib_offset]*1907.35);
    166 //                                      event_caldata[pixel*data_nroi+slice] = float((event_data[pixel*data_nroi+slice]*2000./4096.-calib_baselinemean[pixel*calib_blm_size+drs_calib_offset]-calib_triggeroffsetmean[pixel*data_nroi+slice])/calib_gainmean[pixel*calib_blm_size+drs_calib_offset]*1907.35);
    167174                                        //Note: data_nroi=calib_nroi, calib_blm_size=calib_gm_size
    168175                                }
Note: See TracChangeset for help on using the changeset viewer.