#include "PixModuleGroup/PixModuleGroup.h" #include "PixModule/PixModule.h" #include "PixMcc/PixMcc.h" #include "PixFe/PixFe.h" #include "PixController/PixScanConfig.h" #include "RCCVmeInterface.h" #include "PixConfDBInterface/PixConfDBInterface.h" #include "PixController/RodPixController.h" #include "PixConfDBInterface/TurboDaqDB.h" #include "PixConfDBInterface/RootDB.h" #include "Bits/Bits.h" #include "Histo/Histo.h" #include "PixBoc/PixBoc.h" #include "Config/Config.h" #include "registerIndices.h" #include #include #include #include #include #include using namespace PixLib; using namespace SctPixelRod; std::string cfgFileName; class application{ public: PixModuleGroup* grp; std::vector pmod; std::vector fe; PixMcc* mcc; VmeInterface *vme; PixConfDBInterface *tdb; application(VmeInterface* vm, PixConfDBInterface* td) : vme(vm), tdb(td){InitializeApplication();}; void InitializeApplication(); }; void application::InitializeApplication(){ // DBInquire* root = tdb->readRootRecord(1); // recordIterator pmgIter = root->recordBegin(); // std::cout << "Accessing Application Database: " << (*pmgIter)->getName().c_str() << std::endl; // pmgIter = (*pmgIter)->recordBegin(); DBInquire* root = tdb->readRootRecord(1); recordIterator pmgIter = root->recordBegin(); for(recordIterator it = root->recordBegin(); it != root->recordEnd(); it++){ // Look for application inquire if ((*it)->getName() == "application") { std::cout << "Accessing Application Database: " << (*it)->getName().c_str() << std::endl; pmgIter = (*it)->recordBegin(); break; } else if ((*it)->getName() == "PixModuleGroup") { pmgIter = it; break; } } std::cout << "Creating PixModuleGroup object from records" << std::endl; grp = new PixModuleGroup(tdb, *pmgIter, *vme); PixModuleGroup::moduleIterator m, mEnd=grp->modEnd(); grp->initHW(); grp->downloadConfig(); for(m=grp->modBegin(); m!=mEnd; m++){ std::cout << "*"; pmod.push_back(m); std::cout << std::endl; } } /**************************************************************** * main program * ****************************************************************/ int main(int argc, char **argv) { VmeInterface *vme; PixConfDBInterface *tdb; application * app; bool bocDelayScan = false; bool allLinks = true; bool testInLinks = false; bool scanLink[96]; bool inLink[48]; unsigned int il; for (il=0; il<96; il++) scanLink[il] = false; for (il=0; il<48; il++) inLink[il] = false; if (argc > 1) { cfgFileName = argv[1]; for (int ip=2; ip=0 && l1<96 && l2>=0 && l2<96) { for (il=l1; il<=l2; il++) scanLink[il] = true; } } } else if (strcmp(argv[ip],"-i")==0) { testInLinks = true; unsigned int l1,l2; if (ip+2 < argc) { sscanf(argv[ip+1],"%d",&l1); sscanf(argv[ip+2],"%d",&l2); ip+=2; if (l1>=0 && l1<48 && l2>=0 && l2<48) { for (il=l1; il<=l2; il++) inLink[il] = true; } } } } } else { cfgFileName = "test.cfg.root"; } // if (allLinks == true) { // for (il = 0; il<96; il++) scanLink[il] = true; // } try { vme = new RCCVmeInterface(); std::string dbName(cfgFileName); if(dbName.substr(dbName.size()-5, dbName.size()) == ".root") tdb = new RootDB(dbName.c_str()); else if(dbName.substr(dbName.size()-4, dbName.size()) == ".cfg") tdb = new TurboDaqDB(dbName.c_str()); else {std::cout<<"Invalid config file extension: please provide a .cfg o .root file"<grp; //RodPixController *rod = dynamic_cast(grp->getPixController()); cout<<"Get BOC"<getPixBoc(); if (boc) { cout<<"BOC initialization:"<BocInit(); cout<<"***********************************"<getBocStatus(); cout<<"***********************************"<BocConfigure(); cout<<"***********************************"<showBocConfig(); cout<<"***********************************"<BocConfigure(); // cout<<"***********************************"<BocConfigure(); cout<<"***********************************"<showBocConfig(); cout<<"***********************************"<BocMonitor(monidata); for (int i=0; i<12; i++){ cout<<"Monitorchannel "<