Ignore:
Timestamp:
07/22/11 08:50:23 (13 years ago)
Author:
tbretz
Message:
Optimized event creation.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/fad.cc

    r11510 r11533  
    100100    void HandleSentData(const boost::system::error_code& error, size_t bytes_transferred)
    101101    {
    102         cout << "Data sent: (transmitted=" << bytes_transferred << ") rc=" << error.message() << " (" << error << ")" << endl;
     102#ifdef DEBUG_TX
     103        cout << "Data sent[" << fBoardId << "]: (transmitted=" << bytes_transferred << ") rc=" << error.message() << " (" << error << ")" << endl;
     104#endif
    103105        fOutQueue.pop_front();
    104106    }
     
    131133        fHeader.fFreqRefClock = 997+rand()/(RAND_MAX/7);
    132134
     135        /* Trigger ID
     136
     137        * Byte[4]: Bit 0:    ext1
     138        * Byte[4]: Bit 1:    ext2
     139        * Byte[4]: Bit 2-7:  n/40
     140        * Byte[5]: Bit 0: LP_1
     141        * Byte[5]: Bit 1: LP_2
     142        * Byte[5]: Bit 2: Pedestal
     143        * Byte[5]: Bit 3:
     144        * Byte[5]: Bit 4:
     145        * Byte[5]: Bit 5:
     146        * Byte[5]: Bit 6:
     147        * Byte[5]: Bit 7: TIM source
     148
     149        */
     150
    133151        for (int i=0; i<FAD::kNumTemp; i++)
    134152            fHeader.fTempDrs[i] = (42.+fBoardId/40.+float(rand())/RAND_MAX*5)*16;
    135153
     154        // Header, channel header, end delimiter
     155        size_t sz = sizeof(fHeader) + kNumChannels*sizeof(FAD::ChannelHeader) + 2;
     156        // Data
     157        for (int i=0; i<kNumChannels; i++)
     158            sz += fChHeader[i].fRegionOfInterest*2;
     159
    136160        vector<uint16_t> evtbuf;
     161        evtbuf.reserve(sz);
    137162
    138163        for (int i=0; i<kNumChannels; i++)
    139164        {
    140             fChHeader[i].fStartCell = i*10;
    141 
    142             const vector<uint16_t> buf = fChHeader[i].HtoN();
    143 
    144             evtbuf.insert(evtbuf.end(), buf.begin(), buf.end());
    145             evtbuf.insert(evtbuf.end(), fChHeader[i].fRegionOfInterest, 0x42+i+fHeader.fDac[1]/32);
     165            fChHeader[i].fStartCell = int64_t(1023)*rand()/RAND_MAX;
     166
     167             vector<int16_t> data(fChHeader[i].fRegionOfInterest, -1024+0x42+i/9+fHeader.fDac[1]/32);
     168
     169            for (int ii=0; ii<fChHeader[i].fRegionOfInterest; ii++)
     170            {
     171                const int rel =  ii;
     172                const int abs = (ii+fChHeader[i].fStartCell)%fChHeader[i].fRegionOfInterest;
     173
     174                data[rel] +=  6.*rand()/RAND_MAX +  5*exp(-rel/10); // sigma=10
     175                data[rel] += 15*sin(2*3.1415*abs/512); // sigma=10
     176            }
    146177
    147178            if (triggerid>0)
    148179            {
    149                 int    p    = 5.*rand()/RAND_MAX+20;
     180                int    p    =   5.*rand()/RAND_MAX+ 20;
    150181                double rndm = 500.*rand()/RAND_MAX+500;
    151182                for (int ii=0; ii<fChHeader[i].fRegionOfInterest; ii++)
    152                     *(evtbuf.end()-fChHeader[i].fRegionOfInterest+ii) +=
    153                         rndm*exp(-0.5*(ii-p)*(ii-p)/25); // sigma=10
     183                    data[ii] += rndm*exp(-0.5*(ii-p)*(ii-p)/25); // sigma=10
    154184            }
    155185
    156             for (int ii=0; ii<fChHeader[i].fRegionOfInterest; ii++)
    157             {
    158                 *(evtbuf.end()-fChHeader[i].fRegionOfInterest+ii) +=
    159                     6.*rand()/RAND_MAX +  5*exp(-ii/10); // sigma=10
    160 
    161                 *(evtbuf.end()-fChHeader[i].fRegionOfInterest+(ii+fChHeader[i].fStartCell)%fChHeader[i].fRegionOfInterest) +=
    162                     15*sin(2*3.1415*ii/512); // sigma=10
    163             }
    164 
     186            const vector<uint16_t> buf = fChHeader[i].HtoN();
     187
     188            evtbuf.insert(evtbuf.end(), buf.begin(), buf.end());
     189            evtbuf.insert(evtbuf.end(), data.begin(), data.end());
    165190
    166191            fHeader.fPackageLength += sizeof(ChannelHeader)/2;
Note: See TracChangeset for help on using the changeset viewer.