00001 #include "CalibTracker/SiStripConnectivity/plugins/SiStripFedCablingFromXml.h"
00002 #include "CondFormats/SiStripObjects/interface/SiStripFedCabling.h"
00003 #include "CondFormats/SiStripObjects/interface/FedChannelConnection.h"
00004 #include "CalibFormats/SiStripObjects/interface/SiStripFecCabling.h"
00005 #include <iostream>
00006 #include <fstream>
00007
00008 #define PARSE_FecInstance 0
00009 #define PARSE_FecSlot 1
00010 #define PARSE_FecRing 2
00011 #define PARSE_CCUAddress 3
00012 #define PARSE_I2CAddress 4
00013 #define PARSE_apv0 5
00014 #define PARSE_apv1 6
00015 #define PARSE_fed_id 7
00016 #define PARSE_fed_ch 8
00017 #define PARSE_IdAcq 9
00018 #define PARSE_pairs 10
00019 #define PARSE_dcu_id 11
00020 #define PARSE_det_id 12
00021 #define PARSED_VALS 13
00022
00023
00024
00025 SiStripFedCablingFromXml::SiStripFedCablingFromXml( const edm::ParameterSet& pset )
00026 : SiStripFedCablingESSource( pset ),
00027 connectionFile_( pset.getParameter<std::string>("XmlParsedFile") )
00028 {
00029 std::cout << "[SiStripFedCablingFromXml::SiStripFedCablingFromXml]"
00030 << " Constructing object from file" << connectionFile_ << " ..."
00031 << std::endl;
00032 makeFedCabling();
00033 }
00034
00035
00036
00037 SiStripFedCablingFromXml::~SiStripFedCablingFromXml() {
00038 std::cout << "[SiStripFedCablingFromXml::~SiStripFedCablingFromXml]"
00039 << " Destructing object..." << std::endl;
00040 }
00041
00042
00043
00044 SiStripFedCabling* SiStripFedCablingFromXml::makeFedCabling() {
00045 std::cout << "[SiStripFedCablingFromXml::makeFedCabling]" << std::endl;
00046
00047
00048 SiStripFecCabling fec_cabling;
00049
00050 std::cout << "Cabling the fed a la come viene viene" << std::endl;
00051
00052
00053 bool endOfFile=false;
00054 uint32_t my_values[PARSED_VALS];
00055
00056 std::ifstream prova(connectionFile_.c_str());
00057 while (!prova.eof()) {
00058 for (int vals=0; vals<PARSED_VALS; vals++) {
00059 prova >> my_values[vals];
00060 if (prova.eof()) {
00061 endOfFile=true;
00062 break;
00063 }
00064 }
00065
00066
00067
00068
00069 if (!endOfFile) {
00070
00071
00072 for (int vals=0; vals<PARSED_VALS; vals++) {
00073 std::cout << my_values[vals] << " ";
00074 }
00075 std::cout << std::endl;
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099 FedChannelConnection conn( my_values[PARSE_FecInstance],
00100 my_values[PARSE_FecSlot],
00101 my_values[PARSE_FecRing],
00102 my_values[PARSE_CCUAddress],
00103 my_values[PARSE_I2CAddress],
00104 my_values[PARSE_apv0],
00105 my_values[PARSE_apv1],
00106 my_values[PARSE_dcu_id],
00107 my_values[PARSE_det_id],
00108 my_values[PARSE_pairs],
00109 my_values[PARSE_fed_id],
00110 my_values[PARSE_fed_ch]);
00111 fec_cabling.addDevices( conn );
00112
00113 }
00114 }
00115
00116 std::vector<FedChannelConnection> conns;
00117 fec_cabling.connections( conns );
00118 SiStripFedCabling* cabling = new SiStripFedCabling( conns );
00119 return cabling;
00120
00121 }