Changeset 11700 for trunk/FACT++


Ignore:
Timestamp:
07/29/11 14:31:47 (13 years ago)
Author:
tbretz
Message:
Send the result of the DRS calibration to the GUI.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/EventBuilderWrapper.h

    r11689 r11700  
    129129    static vector<int32_t> fTrgOff;
    130130
     131    static vector<float>   fStats;
     132
    131133    static uint32_t fNumOffset;
    132134    static uint32_t fNumGain;
     
    135137    static int fStep;
    136138
     139    DimDescribedService &fDim;
     140
    137141public:
    138     DataFileCalib(uint32_t id, MessageImp &imp) : DataFileImp(id, imp)
    139     {
    140     }
    141 
    142     static void Restart() { fStep = 0; }
     142    DataFileCalib(uint32_t id, DimDescribedService &dim, MessageImp &imp) : DataFileImp(id, imp), fDim(dim)
     143    {
     144    }
     145
     146    static void Restart()
     147    {
     148        // Default gain:
     149        // 0.575*[45590]*2.5V / 2^16 = 0.99999 V
     150        fOffset.assign(1440*1024, 0);
     151        fGain.assign  (1440*1024, 2);
     152        fTrgOff.assign(1440*1024, 0);
     153
     154        fNumOffset = 1;
     155        fNumGain   = 1;
     156        fNumTrgOff = 1;
     157
     158        reinterpret_cast<uint32_t*>(fStats.data())[0] = 0;
     159        reinterpret_cast<uint32_t*>(fStats.data())[1] = 0;
     160        reinterpret_cast<uint32_t*>(fStats.data())[2] = 0;
     161
     162        int i=0;
     163        while (i<1024*1440*2+3)  // Set mean and RMS to 0
     164            fStats[i++] = 0;
     165        while (i<1024*1440*3+3)
     166            fStats[i++] = 0.5; // Set mean to 0.5
     167        while (i<1024*1440*6+3)
     168            fStats[i++] = 0;   // Set everything else to 0
     169
     170        fStep = 0;
     171    }
     172
     173    static void Update(DimDescribedService &dim)
     174    {
     175        dim.Update(fStats);
     176    }
    143177
    144178    bool OpenFile(RUN_HEAD* h)
     
    169203        InitSize(1440, 1024);
    170204
    171         if (fStep==0)
    172         {
    173             // Default gain:
    174             // 0.575*[45590]*2.5V / 2^16 = 0.99999 V
    175             fOffset.assign(1440*1024, 0);
    176             fGain.assign  (1440*1024, 2);
    177             fTrgOff.assign(1440*1024, 0);
    178 
    179             fNumOffset = 1;
    180             fNumGain   = 1;
    181             fNumTrgOff = 1;
    182         }
    183 
    184205        return true;
    185206    }
     
    209230            fOffset.assign(fSum.begin(), fSum.end());
    210231            fNumOffset = fNumEntries;
     232            reinterpret_cast<uint32_t*>(fStats.data())[0] = GetRunId();;
     233            GetSampleStats(fStats.data()+3, 0.5);
    211234        }
    212235        if (fStep==1)
     
    214237            fGain.assign(fSum.begin(), fSum.end());
    215238            fNumGain = fNumEntries*1000;
     239            reinterpret_cast<uint32_t*>(fStats.data())[1] = GetRunId();;
    216240            // Scale from Volt to Millivolt
     241            GetSampleStats(fStats.data()+1024*1440*2+3, 0.5);
    217242        }
    218243        if (fStep==2)
     
    220245            fTrgOff.assign(fSum.begin(), fSum.end());
    221246            fNumTrgOff = fNumEntries;
    222         }
     247            reinterpret_cast<uint32_t*>(fStats.data())[2] = GetRunId();;
     248            GetSampleStats(fStats.data()+1024*1440*4+3, 0.5);
     249        }
     250
     251        fDim.Update(fStats);
     252
    223253        fStep++;
    224254
     
    248278vector<int32_t> DataFileCalib::fGain  (1440*1024, 2);
    249279vector<int32_t> DataFileCalib::fTrgOff(1440*1024, 0);
     280vector<float>   DataFileCalib::fStats (1440*1024*6+3);
    250281
    251282uint32_t DataFileCalib::fNumOffset = 1;
     
    939970    DimDescribedService fDimRoi;
    940971    DimDescribedService fDimDac;
     972    DimDescribedService fDimDrsCalibration;
    941973    DimDescribedService fDimStatistics1;
    942974    DimDescribedService fDimStatistics2;
     
    9911023        fDimRoi         ("FAD_CONTROL/REGION_OF_INTEREST", "S:2",  ""),
    9921024        fDimDac         ("FAD_CONTROL/DAC",                "S:336", ""),
     1025        fDimDrsCalibration("FAD_CONTROL/DRS_CALIBRATION",  "I:3;F:1474560;F:1474560;F:1474560;F:1474560;F:1474560;F:1474560", ""),
    9931026        fDimStatistics1 ("FAD_CONTROL/STATISTICS1",        "I:3;I:5;X:4;I:3;I:3;I:40;I:1;I:2;C:40;I:40;I:40;X:40", ""),
    9941027        fDimStatistics2 ("FAD_CONTROL/STATISTICS2",        "I:1;I:280;X:40;I:40;I:4;I:4;I:2;I:2;I:3;C:40",  ""),
     
    12041237        fFileFormat = f;
    12051238        if (fFileFormat==kCalib)
     1239        {
    12061240            DataFileCalib::Restart();
     1241            DataFileCalib::Update(fDimDrsCalibration);
     1242            fMsg.Message("Resetted DRS calibration.");
     1243        }
    12071244    }
    12081245
     
    13111348        case kFits:  file = new DataFileFits(runid,  fMsg); break;
    13121349        case kRaw:   file = new DataFileRaw(runid,   fMsg); break;
    1313         case kCalib: file = new DataFileCalib(runid, fMsg); break;
     1350        case kCalib: file = new DataFileCalib(runid, fDimDrsCalibration, fMsg); break;
    13141351        }
    13151352
     
    15671604        Time newt;
    15681605
     1606        // FIXME: Only send events if the have newer run-numbers
    15691607        if (newt<oldt+boost::posix_time::seconds(1))
    15701608            return 0;
Note: See TracChangeset for help on using the changeset viewer.