/// Note that this code is only for develop the method. Then they have to be moved in proper place. Do not use this macro in such terrible construction for analysis. #include enum VAR {NONE=-1, SI, SLOW, FAST, TOF30, TOFSi}; enum egain {LG,HG}; void UnpackLandAndClusterize(){ cout << "important: uncomment the only branches you want to write around line 23 of TRootEvent/TRootEvent.cxx!"<Load("libMbs"); gSystem->Load("libMbsAPI"); gSystem->Load("libTLANDEvent"); gSystem->Load("libTRootEvent"); gSystem->Load("libSTA"); TRootDefine landtree; TRootLANDEvent *landevt = 0; bool corr=true; if(corr){ landtree.Open("asyeos_sta_land_run1334_0703.root"); } else{ landtree.Open("asyeosland_1980befcorr.root"); } landtree.GetTree()->SetTitle("AsyEos beam"); TRootLANDEvent *landevt = landtree.GetLANDEvt(); TRootLANDEventStaInput *pLandStaInput = landtree.GetLANDEvtStaIn(); TRootLANDEventStaOutput *pLandStaOutput = landtree.GetLANDEvtStaOut(); int MBSTSh,MBSTSm,MBSTSs; string dir = getenv("VMCWORKDIR"); string landcaldir = dir + "/CALFILES/LAND/"; TLANDEvent* land_evt = 0; land_evt = new TLANDEvent(landcaldir); land_evt->DoLANDMapping();//apply mapping! land_evt->TLANDTSync(); if(corr){land_evt->TLANDReadPar();} int ii; int landrawmulti; int Nruns; TString InFile ; ifstream inputfile; ///TODO: Set path to your run list file //inputfile.open("runlistcorr.dat"); inputfile.open("../runlistK52J.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; Bool_t enoughtEvents = false; Int_t eventsToAnalyze = 100000000000; TRandom2 * RandomGenerator = new TRandom2 (); Int_t fRawMulti = 0; StaAdapter STA; string dir = getenv("VMCWORKDIR"); string configFileDir = dir + "/CALFILES/LAND/"; string configFile1 = configFileDir + "fouttime_all.dat"; string configFile2 = configFileDir + "fout_all.dat"; ///NEW OFFSET! string configFile3 = configFileDir + "timeoffset_all.dat"; ///TODO: THIS FILE NEED TO BE ADDED TO THE REPO Int_t verboseLevel = 3; ///For this scale is from 0 to 10 STA.SetVerboseLevel( verboseLevel ); ///cout << "VERBOSE LEVEL " << STA.GetVerboseLevel() << endl; STA.fStaPrepareParameters ( configFile1, configFile2, configFile3 ); //STA.SetGlobalTimeOffset(0); STA.printConfigurationsParameters(); 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 mbsevt=0; int ii=0; while(!lastevent && !enoughtEvents){ if(i%9000==0)cout << "############################# i="<< i << endl; lastevent=myMbs->GetEvent(); Int_t nrSubEvts=myMbs->GetNrSubEvent(); if ( i > eventsToAnalyze ){ enoughtEvents = true; } for(Int_t j=1;j<=nrSubEvts;j++){ SubEventDataPtr=myMbs->GetSubEvent(j,sebuflenght,setype,sesubtype,sesubcrate); if((*setype==10) && (*sesubtype==1) && (*SubEventDataPtr==512)) { MBSTSh=*(SubEventDataPtr+1) & 0x0000ffff; MBSTSm=*(SubEventDataPtr+2) & 0x0000ffff; MBSTSs=*(SubEventDataPtr+3) & 0x0000ffff; mbsevt++; } if((*setype==36) && (*sesubtype==9494) ) { //cout << "\r\r\r\r\r\r if ( verboseLevel > 3 )cout << "LAND Event i = " << i << " " << endl ;// << "\t Progress=" <<((int)i*100/eventsToAnalyze) << "[%]"; fRawMulti=land_evt->ProcessCurrentEventMBS(SubEventDataPtr, *sebuflenght); landrawmulti=land_evt->GetLANDRawData(landevt,corr); STA.fStaPrepareData ( pLandStaInput, landevt ); STA.fStaCalculate ( pLandStaOutput, pLandStaInput ); landtree.GetTree()->Fill(); } } i++; } myMbs->CloseFile(); } } cout << "prima di chiudere landtree"<