00001
00002
00003
00004
00005
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef CLUSTERSUMMARY
00021 #define CLUSTERSUMMARY
00022
00023
00024 #include <memory>
00025 #include <string>
00026 #include <map>
00027 #include <vector>
00028 #include<iostream>
00029 #include <string.h>
00030 #include <sstream>
00031 #include "FWCore/Utilities/interface/Exception.h"
00032
00033
00034
00035 #include "DataFormats/SiStripCluster/interface/SiStripCluster.h"
00036 #include "DataFormats/SiStripDigi/interface/SiStripDigi.h"
00037 #include "DataFormats/SiPixelCluster/interface/SiPixelCluster.h"
00038 #include "DataFormats/Common/interface/DetSetVectorNew.h"
00039
00040
00041 #include "DataFormats/SiStripDigi/interface/SiStripProcessedRawDigi.h"
00042 #include "DataFormats/Common/interface/DetSetVector.h"
00043
00044 #include "DataFormats/SiStripDetId/interface/StripSubdetector.h"
00045 #include "DataFormats/DetId/interface/DetId.h"
00046 #include "DataFormats/SiStripDetId/interface/TIBDetId.h"
00047 #include "DataFormats/SiStripDetId/interface/TOBDetId.h"
00048 #include "DataFormats/SiStripDetId/interface/TIDDetId.h"
00049 #include "DataFormats/SiStripDetId/interface/TECDetId.h"
00050 #include "DataFormats/SiPixelDetId/interface/PXBDetId.h"
00051 #include "DataFormats/SiPixelDetId/interface/PXFDetId.h"
00052 #include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h"
00053 #include "DataFormats/SiPixelDetId/interface/PixelBarrelName.h"
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122 class ClusterSummary {
00123
00124 public:
00125
00126 ClusterSummary():genericVariablesTmp_(6, std::vector<double>(100,0) ){}
00127
00128
00129 enum CMSTracker { TRACKER = 0,
00130 TIB = 1,
00131 TIB_1 = 11, TIB_2 = 12, TIB_3 = 13, TIB_4 = 14,
00132 TOB = 2,
00133 TOB_1 = 21, TOB_2 = 22, TOB_3 = 23, TOB_4 = 24, TOB_5 = 25, TOB_6 = 26,
00134 TID = 3,
00135 TIDM = 31, TIDP = 32,
00136 TIDM_1 = 311, TIDM_2 = 312, TIDM_3 = 313,
00137 TIDP_1 = 321, TIDP_2 = 322, TIDP_3 = 323,
00138 TIDMR_1 = 3110, TIDMR_2 = 3120, TIDMR_3 = 3130,
00139 TIDPR_1 = 3210, TIDPR_2 = 3220, TIDPR_3 = 3230,
00140 TEC = 4,
00141 TECM = 41, TECP = 42,
00142 TECM_1 = 411, TECM_2 = 412, TECM_3 = 413, TECM_4 = 414, TECM_5 = 415, TECM_6 = 416, TECM_7 = 417, TECM_8 = 418, TECM_9 = 419,
00143 TECP_1 = 421, TECP_2 = 422, TECP_3 = 423, TECP_4 = 424, TECP_5 = 425, TECP_6 = 426, TECP_7 = 427, TECP_8 = 428, TECP_9 = 429,
00144 TECMR_1 = 4110, TECMR_2 = 4120, TECMR_3 = 4130, TECMR_4 = 4140, TECMR_5 = 4150, TECMR_6 = 4160, TECMR_7 = 4170,
00145 TECPR_1 = 4210, TECPR_2 = 4220, TECPR_3 = 4230, TECPR_4 = 4240, TECPR_5 = 4250, TECPR_6 = 4260, TECPR_7 = 4270,
00146
00147 PIXEL = 5,
00148 FPIX = 6,
00149 FPIX_1 = 61,FPIX_2 = 62,FPIX_3 = 63,
00150 FPIXM = 611, FPIXP = 612,
00151 FPIXM_1 = 6110, FPIXM_2 = 6120, FPIXM_3 = 6130,
00152 FPIXP_1 = 6210, FPIXP_2 = 6220, FPIXP_3 = 6230,
00153 BPIX = 7,
00154 BPIX_1 = 71, BPIX_2 = 72, BPIX_3 = 73
00155
00156 };
00157
00158
00159 enum VariablePlacement{ NMODULES = 0,
00160 CLUSTERSIZE = 1,
00161 CLUSTERCHARGE = 2,
00162 NMODULESPIXELS = 3,
00163 CLUSTERSIZEPIXELS = 4,
00164 CLUSTERCHARGEPIXELS = 5};
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176 double GetGenericVariable( int variableLocation, int module ) const {
00177 return GetModuleLocation(module) < 0 ? 0. : genericVariables_[variableLocation][GetModuleLocation(module)]; }
00178
00179
00180 double GetGenericVariable( std::string variableName, int module ) const {
00181
00182 int position = GetVariableLocation(variableName);
00183 int mposition = GetModuleLocation(module);
00184
00185 return mposition < 0 ? 0. : genericVariables_[position][mposition];
00186 }
00187
00188
00189 std::vector<double> GetGenericVariable( std::string variableName ) const {
00190 return genericVariables_[GetVariableLocation(variableName)];
00191 }
00192
00193
00194 std::vector<double> GetGenericVariable( int variableLocation ) const {
00195 return genericVariables_[variableLocation];
00196 }
00197
00198
00199 std::vector< std::vector<double> > GetGenericVariable() const { return genericVariables_; }
00200
00201
00202 void SetGenericVariable( int variableLocation, int module, double value ) {
00203 if(GetModuleLocation(module) >=0) genericVariablesTmp_[variableLocation][GetModuleLocation(module)] += value; }
00204
00205
00206 void SetGenericVariable( std::string variableName, int module, double value ) {
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218 int position = GetVariableLocation(variableName);
00219 int mposition = GetModuleLocation(module);
00220
00221 if(mposition >=0) genericVariablesTmp_[position][mposition] += value;
00222 }
00223
00224
00225 void PrepairGenericVariable() {
00226
00227 genericVariables_ = genericVariablesTmp_;
00228
00229 for (unsigned int i = 0; i < userContent.size(); ++i){
00230 genericVariables_[i].erase(std::remove(genericVariables_[i].begin(), genericVariables_[i].end(), 0), genericVariables_[i].end());
00231 }
00232 }
00233
00234
00235 void ClearGenericVariable() {
00236
00237
00238
00239 for (unsigned int i = 0; i < genericVariablesTmp_.size(); ++i){
00240 for (unsigned int j = 0; j < genericVariablesTmp_[i].size(); ++j){
00241 genericVariablesTmp_[i][j] = 0;
00242 }
00243 }
00244 }
00245
00246
00247
00248
00249 void SetUserContent(const std::vector<std::string>& Content) const { userContent = Content;}
00250 std::vector<std::string> GetUserContent() { return userContent;}
00251 int GetUserContentSize() { return userContent.size(); }
00252 void GetUserContentInfo() const {
00253 std::cout << "Saving info for " ;
00254 for (unsigned int i = 0; i < userContent.size(); ++i){ std::cout << userContent.at(i) << " " ;}
00255 std::cout << std::endl;
00256 }
00257 int GetVariableLocation ( std::string var ) const;
00258
00259
00260
00261 void SetUserModules( int value ) { modules_.push_back( value ); }
00262 std::vector<int> GetUserModules( ) const { return modules_; }
00263 void ClearUserModules( ) { modules_.clear(); }
00264
00265 int GetModuleLocation ( int mod ) const;
00266
00267
00268
00269 void SetUserIterator() { iterator_.push_back( GetUserContentSize() );}
00270 std::vector<int> GetUserIterator() const { return iterator_; }
00271 void ClearUserIterator() { iterator_.clear(); }
00272
00273
00274 std::vector<std::string> DecodeProvInfo(std::string ProvInfo) const;
00275
00276
00277 class ModuleSelection{
00278 public:
00279 ModuleSelection(std::string gs);
00280 virtual ~ModuleSelection();
00281 virtual std::pair<int,int> IsStripSelected (int DetId);
00282 virtual std::pair<int,int> IsPixelSelected (int DetId);
00283 private:
00284 std::string geosearch;
00285 };
00286
00287
00288
00289
00290 private:
00291
00292
00293
00294 mutable std::vector<std::string> userContent;
00295
00296 std::vector<int> iterator_;
00297 std::vector<int> modules_;
00298
00299 std::vector< std::vector<double> > genericVariables_;
00300 mutable std::vector< std::vector<double> > genericVariablesTmp_;
00301
00302 };
00303
00304
00305 #endif
00306
00307
00308
00309
00310
00311
00312