Exemple #1
0
void EventView::slotUpdateCurrent()
{
    Event event = DATAMODEL->eventForId(m_event.id());
    if (event != m_event)
        setCurrentEvent(event);
    slotUpdateTotal();
}
Exemple #2
0
void EventView::slotCurrentItemChanged(const QModelIndex &start, const QModelIndex &)
{
    if (!start.isValid()) {
        m_event = Event();
        m_actionDeleteEvent.setEnabled(false);
        m_actionEditEvent.setEnabled(false);
    } else {
        m_actionDeleteEvent.setEnabled(true);
        m_actionEditEvent.setEnabled(true);
        Event event = m_model->eventForIndex(start);
        Q_ASSERT(event.isValid());   // index is valid,  so...
        setCurrentEvent(event);
    }

    slotConfigureUi();
}
Exemple #3
0
void JSDOMWindowBase::willRemoveFromWindowShell()
{
    setCurrentEvent(0);
}
Exemple #4
0
void JSDOMWindowBase::clearHelperObjectProperties()
{
    setCurrentEvent(0);
}
Exemple #5
0
UnPackX::UnPackX(string fName,bool debug,void (*callback)(int valueType,void *value),int wantedValues)
{
        memset(pulsesInPSCycle,0,14*4);
        // init variables
        runHeader=new _BOS_RCTR();
        moduleHeader=new _BOS_MODH();
        indexHeader=new _BOS_INDX();
        eventHeader=new _BOS_EVEH();
        firstEventHeader=new _BOS_EVEH();
        infoHeader=new _BOS_INFO();
        beamHeader=new _BOS_BEAM();
        hivoHeader=new _BOS_HIVO();
        _BOS_SLOW *slowHeader=new _BOS_SLOW();

        u_int* indexItem;
        firstEvent=0xffffffff;
        lastEvent=0xffffffff;
        fileName=fName;
        cacheSize=0;
        nbrOfHVEvents=0;
        totalNumberOfProtons=0.0;
        nbrOfEventsWithProtonIntensity=0;
        nbrOfEventsWithoutProtonIntensity=0;
        memset(pulsesInPSCycle,0,14*4);
        memset(protonsInPSCycle,0,14*sizeof(double));
        double lastBeamDate=0;
        double beamDateOffset=0;   // to have the beam as time since midnight before start (if run crosses midnight)

        // beginn processing
        dataFile = new f_i(fileName);
        if (!dataFile) {
                if (debug) cout << "Cannot open file !"<<endl;
                fileName="";
                bad=true;
                return;
        }
        //u_int fileSize =  dataFile->size();			// in byte
        _BOS bosHeader;
        bool error=false;
        bad=false;

        while ((!error) && (bosHeader.readFromFile(dataFile))) {
                //if (debug) cout << "Found header " << bosHeader.getTitle() << endl;
                switch (bosHeader.getIntTitle()) {

                case Rctr :
                        if (!runHeader->readFromFile(&bosHeader,dataFile)) {
                                cout << "Error reading runHeader"<<endl;
                                error=true;
                        }
                        break;

                case Modh :
                        if (!moduleHeader->readFromFile(&bosHeader,dataFile)) {
                                cout << "Error reading moduleHeader"<<endl;
                                error=true;
                        }
                        else
                                if (debug) moduleHeader->print();
                        break;

                case Eveh :
                        if (!eventHeader->readFromFile(&bosHeader,dataFile)) {
                                cout << "Error reading eventHeader"<<endl;
                                error=true;
                        }
                        else {
                                if (wantedValues&vtEventHeader) callback(vtEventHeader,eventHeader);
                                if ((debug) && ((eventHeader->getEventNumber()%10)==0)) cout << "Eventnumber " << eventHeader->getEventNumber() << endl;
                                indexItem=new u_int[2+moduleHeader->numberOfStreams];
                                indexList.push_back(indexItem);
                                lastEvent=eventHeader->getEventNumber();
                                if (firstEvent==0xffffffff) {
                                        firstEvent=lastEvent;
                                        firstEventHeader=eventHeader;
                                }
                        }
                        break;

                case Indx :
                        if (!indexHeader->readFromFile(&bosHeader,dataFile)) {
                                cout << "Error reading indexHeader"<<endl;
                                error=true;
                                lastEvent--;
                        }
                        else {
                                memcpy(&indexItem[2],indexHeader->getList(),moduleHeader->numberOfStreams*4);
                                //cout << "Index stream 0 = " << indexItem[2] << endl;
                        }
                        break;

                case Beam :
                        if (!beamHeader->readFromFile(&bosHeader,dataFile)) {
                                cout << "Error reading beamHeader"<<endl;
                                error=true;
                                lastEvent--;
                        }
                        else {
                                memcpy(indexItem,beamHeader->getList(),8);
                                if ((beamHeader->getList()[0]!=0.0) && (beamHeader->getList()[0]<lastBeamDate)) {
                                        beamDateOffset+=60.0*60.0*24.0;  // another nice day just started...
                                        if (debug) printf("Midnight crossing, offset now %f\n",beamDateOffset);
                                }
                                double beamDate=double(beamHeader->getList()[0])+beamDateOffset;
                                u_int cycle=(u_int)((beamDate - 16.8*int(beamDate/16.8))/1.2);
                                if ((cycle<14) && (beamHeader->getList()[1]>0)) {
                                        pulsesInPSCycle[cycle]++;
                                        protonsInPSCycle[cycle]+=beamHeader->getList()[1];
                                }
                                if (beamHeader->getList()[0]!=0.0) lastBeamDate=beamHeader->getList()[0];
                                if ((debug) && (cycle>=14)) printf("Wrong cycle: %d !\n",cycle);
                                if ((debug) && ((eventHeader->getEventNumber()%10)==0)) printf("Time: %16f Intensity %3.2e\n",beamDate,beamHeader->getList()[1]);
                                if ((beamHeader->getList()[1]>1E10) && (beamHeader->getList()[1]<1E13)) {
                                        totalNumberOfProtons+=beamHeader->getList()[1];
                                        nbrOfEventsWithProtonIntensity++;
                                }
                                else
                                        nbrOfEventsWithoutProtonIntensity++;
                                if (wantedValues&vtBeamHeader) callback(vtBeamHeader,beamHeader);
                        }
                        break;

                case Info :
                        if (debug) cout << "reading info" << endl;
                        if (!infoHeader->readFromFile(&bosHeader,dataFile)) {
                                cout << "Error reading infoHeader"<<endl;
                                error=true;
                        }
                        break;

                case Slow :
                        if (debug) cout << "reading Slow" << endl;
                        if (wantedValues&vtSlowHeader) {
                                if (!slowHeader->readFromFile(&bosHeader,dataFile)) {
                                        cout << "Error reading slowHeader"<<endl;
                                        error=true;
                                }
                                else
                                        callback(vtSlowHeader,slowHeader);
                        } // if wanted
                        else
                                dataFile->step(bosHeader.getLength()*4);break;
                        break;
                case Hivo :
                        if (nbrOfHVEvents<maxHVEvents) {
                                hvEvent[nbrOfHVEvents]=eventHeader->getEventNumber();
                                hvFilePos[nbrOfHVEvents]=dataFile->fPos();
                                nbrOfHVEvents++;
                        };
                        dataFile->step(bosHeader.getLength()*4);break;
                default :
                        printf("unknown header after event %d filePos: %d. Skipping.\n",lastEvent,(int)dataFile->fPos());
                        char* name=bosHeader.getTitle();
                        printf("Name: '%s' rev: %d res: %d size %d\n",name,bosHeader.bos->revNumber,bosHeader.bos->reserved,bosHeader.getLength()*4);
                        for (int i=0;i<4;i++) if (name[i]<32) error=true;
                        if (bosHeader.bos->reserved!=0) error=true; // stopIt!
                        dataFile->step(bosHeader.getLength()*4);break;
                } // switch

        } // while
        if (firstEvent==0xffffffff) bad=true;
        setCurrentEvent(firstEvent);
        /* -> now in EventDisplay
printf("\n---Beam info--------------------------------------\n");
printf("Total number of protons:    %3.2e\n",totalNumberOfProtons);
printf("Events with p-intensity:    %d\n",nbrOfEventsWithProtonIntensity);
printf("Events without p-intensity: %d\n",nbrOfEventsWithoutProtonIntensity);
for (u_int i=0;i<14;i++)
  printf("%6d pulses in the %2d. cycle\n",pulsesInPSCycle[i],i+1);
printf("--------------------------------------------------\n\n");
*/
        delete slowHeader;
}