#include #include void UnpackBasic(){ gSystem->Load("libMbs"); gSystem->Load("libMbsAPI"); gSystem->Load("libTCHIEvent"); gSystem->Load("libTMBALLEvent"); gSystem->Load("libTLANDEvent"); gSystem->Load("libTKRATEvent"); gSystem->Load("libTSTELEvent"); gSystem->Load("libTRootEvent"); string dir = getenv("VMCWORKDIR"); string landcaldir = dir + "/CALFILES/LAND/"; TRootDefine chitree; TRootCHIEvent *evt = 0; chitree.Open("asyeos.root"); chitree.GetTree()->SetTitle("AsyEos beam"); evt = chitree.GetCHIEvt(); int MBSTSh,MBSTSm,MBSTSs; int CHITSh,CHITSm,CHITSs; int Trig_Patt; int bit_Trig_Patt[16]; vector pchim; Int_t time, de, fastpg, fastgg, slowpg, slowgg, timecsi; Float_t x,y; TH2F* h2=new TH2F("fast-slow ntel=212","fs 212",100,0.,4200,100,0.,4200.); TH2F* h22=new TH2F("fast-time ntel=212","ft 212",100,0.,4200,100,0.,4200.); TCHIEvent* chimera_evt = 0; chimera_evt = new TCHIEvent("gsieos.par",2); chimera_evt->ProcessParFile(); chimera_evt->Get_Pedestal_Data("asyeos.ped"); TMBALLEvent* mball_evt = 0; mball_evt = new TMBALLEvent(); mball_evt->LoadMapping("microball_mappingwTDC.txt"); mball_evt->LoadThresholds("adc_thresh.dat"); TLANDEvent* land_evt = 0; land_evt = new TLANDEvent(landcaldir); // land_evt->PassLANDData(landhistlist); land_evt->DoLANDMapping();//apply mapping! // Krakow array objects. Begining Int_t iKrakowEv = 0; TKRATRawEvent *krakow_evt = 0; TKRATMapping KrattaMapping; KrattaMapping.Init( "/home/sebastian/Projects/asyeosroot/asyeosroot/macros/KRATTA_mapping.conf"); KrattaMapping.PrintMapping(); TSTELEvent* stel_evt = 0; stel_evt = new TSTELEvent(); Int_t word[33]; int ii; int Nruns; TString InFile ; ifstream inputfile; //inputfile.open("runlist_local.dat"); inputfile.open("runlist.dat"); inputfile >> Nruns; MbsFile* myMbs=0; Int_t *status=new Int_t; Int_t* sebuflenght=new Int_t; Short_t* setype=new Short_t; Short_t* sesubtype=new Short_t; Char_t* sesubcrate=new Char_t; Int_t* SubEventDataPtr=new Int_t; TH1F * hKrakow_Mult = new TH1F ("hKrakow_Mult", "Multiplicity", 105, 0, 105); for(int irun=0;irun>InFile; myMbs= new MbsFile(InFile,status); cout << "$$$$$$$$$$$$$$$$$$$$$$$$$$$$" << endl; cout <PrintFileHeader(); Int_t lastevent=0; Int_t i=0; Int_t chievt=0; Int_t mbsevt=0; // for(i=0;i<100000;i++){ while(!lastevent){ // cout << "############################# i="<< i << endl; // getchar(); if(i%5000==0)cout << "############################# i="<< i << endl; lastevent=myMbs->GetEvent(); Int_t nrSubEvts=myMbs->GetNrSubEvent(); for(Int_t j=1;j<=nrSubEvts;j++){ // cout << "inside 2 prima "<<(*SubEventDataPtr)<GetSubEvent(j,sebuflenght,setype,sesubtype,sesubcrate); // cout << "inside: subevent pointing to"<<(SubEventDataPtr)<<" lenght: "<<*sebuflenght<< endl; //imp cout << "inside: nr of se="<ProcessCurrentEventMBS(SubEventDataPtr); chimera_evt->GetTiMeStamp(&CHITSs,&CHITSm,&CHITSh); chievt++; //imp cout <<"CHIMERA TIMESTAMP= "<ProcessCurrentEventMBS(SubEventDataPtr,*sebuflenght); //imp cout <<"MBALL raw multi="<GetMBALLMultiplicity()<ProcessCurrentEventMBS(SubEventDataPtr,*sebuflenght); //imp cout <<"LAND raw multi="<GetLANDMultiplicity()<GetLANDHitMaps(); // getchar(); } /// ToFWall Subvent: if((*setype==32) && (*sesubtype==1130) ) { //imp cout << "Found a valid ToFWall subevent OKKKKKKKKKKKKKKKKKKKKKKKKK"<>21; word[ii] = (((*(SubEventDataPtr+ii))<<21)>>21); // cout<<(hex)<>21); // word = psubevt->Data(i); // word= (word<<21)>>21; // cout<<(hex)<>20); // cout<<(hex)<X1raw = word[13]; stel_evt->X2raw = word[14]; stel_evt->Y1raw = word[15]; stel_evt->Y2raw = word[16]; stel_evt->TS1raw = word[5]; stel_evt->TS2raw = word[6]; stel_evt->QS1raw = word[21]; stel_evt->QS2raw = word[22]; stel_evt->Calibrate(); // stel_evt->FillHistos(); } /// KRAKOW Subvent: if((*setype == 36) && (*sesubtype == 1) ) /// && (iKrakowEv < 400) { iKrakowEv++; Int_t sKrkMult = krakow_evt -> ProcessCurrentEventMBS ( SubEventDataPtr, *sebuflenght, KrattaMapping); hKrakow_Mult -> Fill ( sKrkMult ); eKrattaRawEvent->SetId( i ); ///cout << eKrattaRawEvent.ToString() << "; id = " << eKrattaRawEvent.GetId() << endl; ///cout << eKrattaRawEvent.ToStringPhotodiode() << endl; } }/// END LOOP OVER SUBEVENTS for(Int_t j=1;j<=nrSubEvts;j++) // cout << "inside 1"<CloseFile(); } /// END CONDITION if(!(*status)) } /// END LOOP OVER FILES for(int irun=0;irun