Example #1
0
void OnlineGUI::CheckRootFile() {
  // Check the path to the rootfile (should follow symbolic links)
  // ... If found:
  //   Reopen new root file, 
  //   Reconnect the timer to TimerUpdate()

  if(gSystem->AccessPathName(fConfig->GetRootFile())==0) {
    cout << "Found the new run" << endl;
#ifndef OLDTIMERUPDATE
    if(OpenRootFile()==0) {
#endif
      timer->Reset();
      timer->Disconnect();
      timer->Connect(timer,"Timeout()","OnlineGUI",this,"TimerUpdate()");
#ifndef OLDTIMERUPDATE
    }
#endif
  } else {
    TString rnBuff = "Waiting for run";
    fRunNumber->SetText(rnBuff.Data());
    hframe->Layout();
  }

}
Example #2
0
int main(int argc, char**argv)
{
	FILE *fIn;
	TFile *fOut;
	struct pre_event_struct *event;
	struct event_struct *Evt;
	struct event_struct *EvtOld;
	int GEvtCnt;
	int i, j, irc;
	long long tbegin, tsum;
	int EvWin;
	time_t systime;
	int Cnt[20];
	const char *CntName[20] = {"Events read", "Time defined", "In diff time cut", "In energy cuts", "Global events", "Global events+2", "Global events+3", 
		"Veto", "Full selection", "", "", "", "", "", "", "", "", "", "", ""};

	Evt = NULL;
	event = NULL;
	fIn = NULL;
	fOut = NULL;
	tsum = 0;
	memset(Cnt, 0, sizeof(Cnt));
	memset(Hist.obj, 0, sizeof(Hist));

	if (ReadMap("danss_map.txt")) return 10;

//		Initializing files and memory
	if (argc < 2) {
		printf("Usage: ./danal2 file.rdat ...\n");
		return 20;
	}

	printf("%d files requested\n", argc - 1);
	fOut = OpenRootFile(argv[1]);
	if (!fOut->IsOpen()) {
		printf("Can not open output root file for %s\n", argv[1]);
		goto fin;
	}

	Evt = (struct event_struct *) malloc(EESIZE);
	EvtOld = (struct event_struct *) malloc(EESIZE);
	event = (struct pre_event_struct *) malloc(ESIZE);
	if (!event || !Evt || !EvtOld) {
		printf("Allocation failure: %m\n");
		goto fin;
	}
//		Book histogramms and trees
	BookHist();
		
	for (j=1; j<argc; j++) {
		GEvtCnt = 0;
		fIn = fopen(argv[j], "rb");
		if (!fIn) {
			printf("Can not open input file %s: %m\n", argv[j]);
			continue;
		}
		EvtOld->gtime = -125000000;
		tbegin = -1;
		EvWin = 0;
		for(;!feof(fIn);) {
			irc = fread(event, sizeof(int), 1, fIn);
			if (irc != 1) break;
			if (event->len > ESIZE || event->len < sizeof(struct pre_event_struct)) {
				printf("Odd block size: %d\n", event->len);
				break;
			}
			irc = fread(&event->systime, event->len - sizeof(int), 1, fIn);
			if (irc != 1) {
				printf("Unexpected EOF - %m\n");
				break;
			}
			systime = event->systime;
			if (tbegin < 0) {
				printf("File %s. Start: %s", argv[j], ctime(&systime));
				tbegin = event->gtime;
			}
			Cnt[0]++;
			memset(Evt, 0, sizeof(struct event_struct));
			Evt->t = FindEventTime(event);
			if (Evt->t < 0) continue;
			Cnt[1]++;
			FilterAndCopy(Evt, event);
			CalculateEventParameters(Evt);
			Hist.h.hT[0]->Fill((Evt->gtime - EvtOld->gtime) / FREQ);
			Hist.h.hEN[0]->Fill(Evt->ns, Evt->es);
			Hist.h.hESEP[0]->Fill(Evt->es, Evt->ep);
			FillXYZ(Evt, 0);
			Hist.h.hV->Fill(Evt->ev);
			Hist.h.mXZ[0]->Fill(Evt->x, Evt->z);
			Hist.h.mYZ[0]->Fill(99-Evt->y, Evt->z);
			if (Evt->ev >= VETOEMIN || Evt->nv >= VETONMIN) {
				Cnt[7]++;
				continue;
			}
			if (Evt->gtime - EvtOld->gtime <= MAXTDIFF * FREQ) {
				Cnt[2]++;
				if (Evt->ep > E2MIN && Evt->es > E2MIN) {
					Cnt[3]++;
					switch (EvWin) {
					case 0:
						Hist.h.hT[1]->Fill((Evt->gtime - EvtOld->gtime) / FREQ);
						Hist.h.hEN[1]->Fill(EvtOld->ns, EvtOld->es);
						Hist.h.hESEP[1]->Fill(EvtOld->es, EvtOld->ep);
						Hist.h.mXZ[1]->Fill(EvtOld->x, EvtOld->z);
						Hist.h.mYZ[1]->Fill(99-EvtOld->y, EvtOld->z);
						FillXYZ(EvtOld, 1);
						Hist.h.hEN[2]->Fill(Evt->ns, Evt->es);
						Hist.h.hESEP[2]->Fill(Evt->es, Evt->ep);
						FillXYZ(Evt, 2);
						Hist.h.mXZ[2]->Fill(Evt->x, Evt->z);
						Hist.h.mYZ[2]->Fill(99-Evt->y, Evt->z);
						FillN(event, Evt->t, 0);
						FillR(Evt, EvtOld);
						Hist.h.hE->Fill(EvtOld->ee);
						Hist.h.hNG->Fill(EvtOld->ng);
						Hist.h.hNC->Fill(EvtOld->nc);
						FillEMaxN(Evt);
						Cnt[4]++;
						GEvtCnt++;
						if (FinalSelection(Evt, EvtOld)) {
							Hist.h.hEE->Fill(EvtOld->ee);
							Hist.h.hNE->Fill(Evt->en);
							Hist.h.hNR->Fill(Evt->rn);
							Cnt[8]++;
						}
						break;
					case 1:
						Hist.h.hT[2]->Fill((Evt->gtime - EvtOld->gtime) / FREQ);
						Hist.h.hEN[3]->Fill(Evt->ns, Evt->es);
						Hist.h.hESEP[3]->Fill(Evt->es, Evt->ep);
						FillXYZ(Evt, 3);
						Hist.h.mXZ[3]->Fill(Evt->x, Evt->z);
						Hist.h.mYZ[3]->Fill(99-Evt->y, Evt->z);
						FillN(event, Evt->t, 1);
						Cnt[5]++;
						break;
					case 2:
						Hist.h.hT[3]->Fill((Evt->gtime - EvtOld->gtime) / FREQ);
						Hist.h.hEN[4]->Fill(Evt->ns, Evt->es);
						Hist.h.hESEP[4]->Fill(Evt->es, Evt->ep);
						FillXYZ(Evt, 4);
						Hist.h.mXZ[4]->Fill(Evt->x, Evt->z);
						Hist.h.mYZ[4]->Fill(99-Evt->y, Evt->z);
						FillN(event, Evt->t, 2);
						Cnt[6]++;
						break;
					}
					EvWin++;
				}
			} else {
				TryAsPositron(Evt);
				if (Evt->ep > E1MIN && Evt->es > E1MIN && Evt->ee > E1MIN) memcpy(EvtOld, Evt, EESIZE);
				Hist.h.hM->Fill(1.0 * EvWin);
				EvWin = 0;
			}
		}
		printf("%d events. End: %s", GEvtCnt, ctime(&systime));
		tsum += event->gtime - tbegin;
		fclose(fIn);
	}
	printf("Total time %f s.\n", tsum / (FREQ*1000000.0));
	printf("Counters:\n");
	for (i = 0; i < sizeof(Cnt)/sizeof(Cnt[0]); i++) if (Cnt[i]) printf("%50s: %10d\n", CntName[i], Cnt[i]);
	for (i = 0; i< sizeof(Hist) / sizeof(Hist.obj[0]); i++) if (Hist.obj[i]) {
		Hist.obj[i]->Write();
		delete Hist.obj[i];
	}
fin:
	if (event) free(event);
	if (Evt) free(Evt);
	if (EvtOld) free(EvtOld);
	if (fOut && fOut->IsOpen()) {
		fOut->Close();
		delete fOut;
	}

	return 0;
}