Changeset 11493


Ignore:
Timestamp:
07/20/11 18:10:27 (13 years ago)
Author:
tbretz
Message:
Receive the trigger id from the ftm; added gauss pulses in case the data was triggered from the ftm.
File:
1 edited

Legend:

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

    r11466 r11493  
    3636
    3737public:
    38     Trigger() : fCmd("FAD/TRIGGER", "C", this)
     38    Trigger() : fCmd("FAD/TRIGGER", "I:1", this)
    3939    {
    4040    }
     
    9191        fTrigger.Add(this);
    9292    }
    93     void PostTrigger()
     93    void PostTrigger(uint32_t triggerid)
    9494    {
    9595        if (fTriggerEnabled)
    96             get_io_service().post(boost::bind(&tcp_connection::SendData, this));
     96            get_io_service().post(boost::bind(&tcp_connection::SendData, this, triggerid));
    9797    }
    9898
     
    123123    deque<vector<uint16_t>> fOutQueue;
    124124
    125     void SendData()
     125    void SendData(uint32_t triggerid)
    126126    {
    127127        fHeader.fPackageLength = sizeof(EventHeader)/2+1;
    128128        fHeader.fEventCounter++;
    129         fHeader.fTriggerId = fHeader.fEventCounter;
     129        fHeader.fTriggerId = triggerid;
    130130        fHeader.fTimeStamp = uint32_t((Time(Time::utc).UnixTime()-fStartTime)*10000);
    131131        fHeader.fFreqRefClock = 997+rand()/(RAND_MAX/7);
     
    143143
    144144            evtbuf.insert(evtbuf.end(), buf.begin(), buf.end());
    145             evtbuf.insert(evtbuf.end(), fChHeader[i].fRegionOfInterest, 0x42+i+11.*rand()/RAND_MAX-5);
     145            evtbuf.insert(evtbuf.end(), fChHeader[i].fRegionOfInterest, 0x42+i+11.*rand()/RAND_MAX-5+fHeader.fDac[1]/32);
     146
     147            if (triggerid>0)
     148            {
     149                int    p    = 5.*rand()/RAND_MAX+20;
     150                double rndm = 500.*rand()/RAND_MAX+500;
     151                for (int ii=0; ii<fChHeader[i].fRegionOfInterest; ii++)
     152                    *(evtbuf.end()-fChHeader[i].fRegionOfInterest+ii) = rndm*exp(-0.5*(ii-p)*(ii-p)/25); // sigma=10
     153            }
    146154
    147155            fHeader.fPackageLength += sizeof(ChannelHeader)/2;
     
    192200        // The deadline has passed.
    193201        if (fTriggerEnabled)
    194             SendData();
     202            SendData(0);
    195203
    196204        AsyncWait(fTriggerSendData, fHeader.fTriggerGeneratorPrescaler, &tcp_connection::TriggerSendData);
     
    281289            case kCmdSingleTrigger:
    282290                cout << "-> Trigger " << fBoardId << endl;
    283                 SendData();
     291                SendData(0);
    284292                break;
    285293
     
    438446void Trigger::commandHandler()
    439447{
     448    if (!getCommand())
     449        return;
     450
    440451    for (vector<tcp_connection*>::iterator it=vec.begin();
    441452         it!=vec.end(); it++)
    442         {
    443             (*it)->PostTrigger();
    444         }
     453        (*it)->PostTrigger(getCommand()->getInt());
    445454}
    446455
Note: See TracChangeset for help on using the changeset viewer.