JeffreysPriorDemo.C: tutorial demonstrating and validates the RooJeffreysPrior class | Roostats tutorials | MultivariateGaussianTest.C: comparison of MCMC and PLC in a multi-variate gaussian problem |
////////////////////////////////////// // RooStats Model Inspector // Author Kyle Cranmer <cranmer@cern.ch> // Version 1, October 2011 // - based on tutorial macro by Bertrand Bellenot, Ilka Antcheva // Version 2, November 2011 // - fixes from Bertrand Bellenot <Bertrand.Bellenot@cern.ch> for scrolling window for many parameters // // // Usage: // The usage is the same as the StandardXxxDemo.C macros. // The macro expects a root file containing a workspace with a ModelConfig and a dataset // $ root // .L ModelInspector.C+ // ModelInspector(fileName, workspaceName, modelConfigName, dataSetName); // // Drag the sliders to adjust the parameters of the model. // the min and max range of the sliders are used to define the upper & lower variation // the pointer position of the slider is the central blue curve. // // Click the FIT button to // // To Do: // - check boxes to specify which nuisance parameters used in making variation // - a button to make the profile inspector plots // - a check button to use MINOS errors // - have fit button show the covariance matrix from the fit // - a button to make the log likelihood plots // - a dialog to open the desired file // - ability to see teh signal and background contributions? // #include "TGButton.h" #include "TRootEmbeddedCanvas.h" #include "TGLayout.h" #include "TF1.h" #include "TMath.h" #include "TCanvas.h" #include "TGTextEntry.h" #include "TGLabel.h" #include "TGTripleSlider.h" #include "RooWorkspace.h" #include "RooStats/ModelConfig.h" #include "TFile.h" #include "RooArgSet.h" #include "TList.h" #include "RooAbsPdf.h" #include "RooRealVar.h" #include "RooPlot.h" #include "TGButton.h" #include <map> #include "RooFitResult.h" #include "TROOT.h" #include <TApplication.h> #include "RooSimultaneous.h" #include "RooCategory.h" enum ETestCommandIdentifiers { HId1, HId2, HId3, HCId1, HCId2, HSId1 }; using namespace RooFit; using namespace RooStats; class ModelInspectorGUI : public TGMainFrame { private: TRootEmbeddedCanvas *fCanvas; TGLayoutHints *fLcan; TF1 *fFitFcn; RooPlot* fPlot; RooWorkspace* fWS; TFile* fFile; ModelConfig* fMC; RooAbsData* fData; RooFitResult* fFitRes; TList fSliderList; TList fFrameList; vector<RooPlot*> fPlotList; map<TGTripleHSlider*,const char*> fSliderMap; map<TGTripleHSlider*,TGLabel*> fLabelMap; TGButton* fFitButton; TGTextButton *fExitButton; // BB: a TGCanvas and a vertical frame are needed for using scrollbars TGCanvas *fCan; TGVerticalFrame *fVFrame; TGHorizontalFrame *fHframe0, *fHframe1, *fHframe2; TGLayoutHints *fBly, *fBfly1, *fBfly2, *fBfly3; TGTripleHSlider *fHslider1; // TGTextEntry *fTeh1, *fTeh2, *fTeh3; TGTextBuffer *fTbh1, *fTbh2, *fTbh3; TGCheckButton *fCheck1, *fCheck2; public: ModelInspectorGUI(RooWorkspace*, ModelConfig*, RooAbsData*); virtual ~ModelInspectorGUI(); void CloseWindow(); void DoText(const char *text); void DoSlider(); void DoSlider(const char*); void DoFit(); void DoExit(); void HandleButtons(); ClassDef(ModelInspectorGUI, 0) }; //______________________________________________________________________________ ModelInspectorGUI::ModelInspectorGUI(RooWorkspace* w, ModelConfig* mc, RooAbsData* data) : TGMainFrame(gClient->GetRoot(), 100, 100) { RooMsgService::instance().getStream(1).removeTopic(RooFit::NumIntegration); fWS = w; fMC = mc; fData = data; RooSimultaneous* simPdf = NULL; Int_t numCats = 1; if(strcmp(fMC->GetPdf()->ClassName(),"RooSimultaneous")==0){ cout <<"Is a simultaneous PDF"<< endl; simPdf = (RooSimultaneous*)(fMC->GetPdf()); RooCategory* channelCat = (RooCategory*) (&simPdf->indexCat()); cout <<" with " << channelCat->numTypes() << " categories"<<endl; numCats = channelCat->numTypes(); } else { cout <<"Is not a simultaneous PDF"<<endl; } fFitRes=0; char buf[32]; SetCleanup(kDeepCleanup); // Create an embedded canvas and add to the main frame, centered in x and y // and with 30 pixel margins all around fCanvas = new TRootEmbeddedCanvas("Canvas", this, 600, 400); fLcan = new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 10, 10, 10, 10); AddFrame(fCanvas, fLcan); fPlotList.resize(numCats); if(numCats>1){ fCanvas->GetCanvas()->Divide(numCats); for(int i=0; i<numCats; ++i){ // fCanvas->GetCanvas()->SetFillColor(33); // fCanvas->GetCanvas()->SetFrameFillColor(41); fCanvas->GetCanvas()->cd(i+1)->SetBorderMode(0); fCanvas->GetCanvas()->cd(i+1)->SetGrid(); // fCanvas->GetCanvas()->SetLogy(); } } fHframe0 = new TGHorizontalFrame(this, 0, 0, 0); fCheck1 = new TGCheckButton(fHframe0, "&Constrained", HCId1); fCheck2 = new TGCheckButton(fHframe0, "&Relative", HCId2); fCheck1->SetState(kButtonUp); fCheck2->SetState(kButtonUp); fCheck1->SetToolTipText("Pointer position constrained to slider sides"); fCheck2->SetToolTipText("Pointer position relative to slider position"); fHframe0->Resize(200, 50); fHframe2 = new TGHorizontalFrame(this, 0, 0, 0); fFitButton = new TGTextButton(fHframe2,"Fit"); fFitButton->Connect("Clicked()","ModelInspectorGUI",this,"DoFit()"); fExitButton = new TGTextButton(fHframe2, "Exit "); fExitButton->Connect("Clicked()", "ModelInspectorGUI", this, "DoExit()"); fCheck1->Connect("Clicked()", "ModelInspectorGUI", this, "HandleButtons()"); fCheck2->Connect("Clicked()", "ModelInspectorGUI", this, "HandleButtons()"); fHframe2->Resize(100, 25); //--- layout for buttons: top align, equally expand horizontally fBly = new TGLayoutHints(kLHintsTop | kLHintsExpandX, 5, 5, 5, 5); //--- layout for the frame: place at bottom, right aligned fBfly1 = new TGLayoutHints(kLHintsTop | kLHintsCenterX, 5, 5, 5, 5); fBfly2 = new TGLayoutHints(kLHintsTop | kLHintsLeft, 5, 5, 5, 5); fBfly3 = new TGLayoutHints(kLHintsTop | kLHintsRight, 5, 5, 5, 5); // fHframe0->AddFrame(fCheck1, fBfly2); // fHframe0->AddFrame(fCheck2, fBfly2); fHframe2->AddFrame(fFitButton, fBfly2); fHframe2->AddFrame(fExitButton, fBfly3); AddFrame(fHframe0, fBly); AddFrame(fHframe2, fBly); // Loop over POI & NP, create slider // need maps of NP->slider? or just slider->NP RooArgSet parameters; parameters.add(*fMC->GetParametersOfInterest()); parameters.add(*fMC->GetNuisanceParameters()); TIterator* it = parameters.createIterator(); RooRealVar* param=NULL; // BB: This is the part needed in order to have scrollbars fCan = new TGCanvas(this, 100, 100, kFixedSize); AddFrame(fCan, new TGLayoutHints(kLHintsExpandY | kLHintsExpandX)); fVFrame = new TGVerticalFrame(fCan->GetViewPort(), 10, 10); fCan->SetContainer(fVFrame); // And that't it! // Obviously, the parent of other subframes is now fVFrame instead of "this"... while( (param=(RooRealVar*)it->Next()) ){ cout <<"Adding Slider for "<<param->GetName()<<endl; TGHorizontalFrame* hframek = new TGHorizontalFrame(fVFrame, 0, 0, 0); TGLabel* hlabel = new TGLabel(hframek,Form("%s = %.3f +%.3f",param->GetName(),param->getVal(),param->getError())); TGTripleHSlider* hsliderk = new TGTripleHSlider(hframek, 190, kDoubleScaleBoth, HSId1, kHorizontalFrame, GetDefaultFrameBackground(), kFALSE, kFALSE, kFALSE, kFALSE); hsliderk->Connect("PointerPositionChanged()", "ModelInspectorGUI", this, "DoSlider()"); hsliderk->Connect("PositionChanged()", "ModelInspectorGUI", this, "DoSlider()"); hsliderk->SetRange(param->getMin(),param->getMax()); hframek->Resize(200, 25); fSliderList.Add(hsliderk); fFrameList.Add(hframek); hsliderk->SetPosition(param->getVal()-param->getError(),param->getVal()+param->getError()); hsliderk->SetPointerPosition(param->getVal()); hframek->AddFrame(hlabel, fBly); hframek->AddFrame(hsliderk, fBly); fVFrame->AddFrame(hframek, fBly); fSliderMap[hsliderk]=param->GetName(); fLabelMap[hsliderk]=hlabel; } // Set main frame name, map sub windows (buttons), initialize layout // algorithm via Resize() and map main frame SetWindowName("RooFit/RooStats Model Inspector"); MapSubwindows(); Resize(GetDefaultSize()); MapWindow(); DoSlider(); } //______________________________________________________________________________ ModelInspectorGUI::~ModelInspectorGUI() { // Clean up Cleanup(); } //______________________________________________________________________________ void ModelInspectorGUI::CloseWindow() { // Called when window is closed via the window manager. delete this; } //______________________________________________________________________________ void ModelInspectorGUI::DoText(const char * /*text*/) { // Handle text entry widgets. TGTextEntry *te = (TGTextEntry *) gTQSender; Int_t id = te->WidgetId(); switch (id) { case HId1: fHslider1->SetPosition(atof(fTbh1->GetString()), fHslider1->GetMaxPosition()); break; case HId2: fHslider1->SetPointerPosition(atof(fTbh2->GetString())); break; case HId3: fHslider1->SetPosition(fHslider1->GetMinPosition(), atof(fTbh1->GetString())); break; default: break; } DoSlider(); } //______________________________________________________________________________ void ModelInspectorGUI::DoFit() { fFitRes = fMC->GetPdf()->fitTo(*fData,Save()); map<TGTripleHSlider*,const char*>::iterator it;; it = fSliderMap.begin(); for(; it!=fSliderMap.end(); ++it){ RooRealVar* param=fWS->var(it->second); param = (RooRealVar*) fFitRes->floatParsFinal().find(it->second); it->first->SetPosition(param->getVal()-param->getError(),param->getVal()+param->getError()); it->first->SetPointerPosition(param->getVal()); } DoSlider(); } //______________________________________________________________________________ void ModelInspectorGUI::DoSlider(const char* text) { cout << "." << text <<endl; } //______________________________________________________________________________ void ModelInspectorGUI::DoSlider() { // Handle slider widgets. char buf[32]; RooSimultaneous* simPdf = NULL; Int_t numCats = 0; if(strcmp(fMC->GetPdf()->ClassName(),"RooSimultaneous")==0){ simPdf = (RooSimultaneous*)(fMC->GetPdf()); RooCategory* channelCat = (RooCategory*) (&simPdf->indexCat()); numCats = channelCat->numTypes(); } else { } ///////////////////////////////////////////// if(!simPdf){ ///////////////////////////////////////////// // if not SimPdf ///////////////////////////////////////////// // pre loop map<TGTripleHSlider*,const char*>::iterator it;; delete fPlot; fPlot = ((RooRealVar*)fMC->GetObservables()->first())->frame(); fData->plotOn(fPlot); double normCount; // high loop it = fSliderMap.begin(); for(; it!=fSliderMap.end(); ++it){ const char* name = it->second; fWS->var(name)->setVal(it->first->GetMaxPosition()); RooRealVar* param = fWS->var(name); fLabelMap[it->first]->SetText(Form("%s = %.3f [%.3f,%.3f]",param->GetName(),it->first->GetPointerPosition(),it->first->GetMinPosition(),it->first->GetMaxPosition())); } normCount = fMC->GetPdf()->expectedEvents(*fMC->GetObservables()); fMC->GetPdf()->plotOn(fPlot,LineColor(kRed),Normalization(normCount,RooAbsReal::NumEvent)); // low loop it = fSliderMap.begin(); for(; it!=fSliderMap.end(); ++it){ const char* name = it->second; fWS->var(name)->setVal(it->first->GetMinPosition()); } normCount = fMC->GetPdf()->expectedEvents(*fMC->GetObservables()); fMC->GetPdf()->plotOn(fPlot,LineColor(kGreen),Normalization(normCount,RooAbsReal::NumEvent)); // central oop it = fSliderMap.begin(); for(; it!=fSliderMap.end(); ++it){ const char* name = it->second; fWS->var(name)->setVal(it->first->GetPointerPosition()); } normCount = fMC->GetPdf()->expectedEvents(*fMC->GetObservables()); fMC->GetPdf()->plotOn(fPlot,LineColor(kBlue),Normalization(normCount,RooAbsReal::NumEvent)); fPlot->Draw(); fCanvas->GetCanvas()->Modified(); fCanvas->GetCanvas()->Update(); //////////////////////////////////////////////////////////////////////////// } else { //////////////////////////////////////////////////////////////////////////// // else (is simpdf) //////////////////////////////////////////////////////////////////////////// RooCategory* channelCat = (RooCategory*) (&simPdf->indexCat()); // TIterator* iter = simPdf->indexCat().typeIterator() ; TIterator* iter = channelCat->typeIterator() ; RooCatType* tt = NULL; Int_t frameIndex = 0; while((tt=(RooCatType*) iter->Next())) { ++frameIndex; fCanvas->GetCanvas()->cd(frameIndex); // pre loop RooAbsPdf* pdftmp = simPdf->getPdf(tt->GetName()) ; RooArgSet* obstmp = pdftmp->getObservables(*fMC->GetObservables()) ; RooRealVar* obs = ((RooRealVar*)obstmp->first()); fPlot = fPlotList.at(frameIndex-1); if(fPlot) delete fPlot; fPlot = obs->frame(); fPlotList.at(frameIndex-1) = fPlot; RooFit::MsgLevel msglevel = RooMsgService::instance().globalKillBelow(); RooMsgService::instance().setGlobalKillBelow(RooFit::WARNING); fData->plotOn(fPlot,MarkerSize(1),Cut(Form("%s==%s::%s",channelCat->GetName(),channelCat->GetName(),tt->GetName())),DataError(RooAbsData::None)); RooMsgService::instance().setGlobalKillBelow(msglevel); map<TGTripleHSlider*,const char*>::iterator it;; double normCount; // high loop it = fSliderMap.begin(); for(; it!=fSliderMap.end(); ++it){ const char* name = it->second; fWS->var(name)->setVal(it->first->GetMaxPosition()); RooRealVar* param = fWS->var(name); fLabelMap[it->first]->SetText(Form("%s = %.3f [%.3f,%.3f]",param->GetName(),it->first->GetPointerPosition(),it->first->GetMinPosition(),it->first->GetMaxPosition())); } normCount = pdftmp->expectedEvents(*obs); pdftmp->plotOn(fPlot,LineColor(kRed),LineWidth(2.),Normalization(normCount,RooAbsReal::NumEvent)) ; // low loop it = fSliderMap.begin(); for(; it!=fSliderMap.end(); ++it){ const char* name = it->second; fWS->var(name)->setVal(it->first->GetMinPosition()); RooRealVar* param = fWS->var(name); fLabelMap[it->first]->SetText(Form("%s = %.3f [%.3f,%.3f]",param->GetName(),it->first->GetPointerPosition(),it->first->GetMinPosition(),it->first->GetMaxPosition())); } normCount = pdftmp->expectedEvents(*obs); pdftmp->plotOn(fPlot,LineColor(kGreen),LineWidth(2.),Normalization(normCount,RooAbsReal::NumEvent)) ; // central loop it = fSliderMap.begin(); for(; it!=fSliderMap.end(); ++it){ const char* name = it->second; fWS->var(name)->setVal(it->first->GetPointerPosition()); RooRealVar* param = fWS->var(name); fLabelMap[it->first]->SetText(Form("%s = %.3f [%.3f,%.3f]",param->GetName(),it->first->GetPointerPosition(),it->first->GetMinPosition(),it->first->GetMaxPosition())); } normCount = pdftmp->expectedEvents(*obs); if(!fFitRes) pdftmp->plotOn(fPlot,LineColor(kBlue),LineWidth(2.),Normalization(normCount,RooAbsReal::NumEvent)) ; else{ pdftmp->plotOn(fPlot,Normalization(normCount,RooAbsReal::NumEvent),VisualizeError(*fFitRes,*fMC->GetNuisanceParameters()),FillColor(kYellow)) ; pdftmp->plotOn(fPlot,LineColor(kBlue),LineWidth(2.),Normalization(normCount,RooAbsReal::NumEvent)) ; RooFit::MsgLevel msglevel = RooMsgService::instance().globalKillBelow(); RooMsgService::instance().setGlobalKillBelow(RooFit::WARNING); fData->plotOn(fPlot,MarkerSize(1),Cut(Form("%s==%s::%s",channelCat->GetName(),channelCat->GetName(),tt->GetName())),DataError(RooAbsData::None)); RooMsgService::instance().setGlobalKillBelow(msglevel); } fPlot->Draw(); } fCanvas->GetCanvas()->Modified(); fCanvas->GetCanvas()->Update(); /////////////////////////////////////////// // end if(simPdf) } } //______________________________________________________________________________ void ModelInspectorGUI::HandleButtons() { // Handle different buttons. TGButton *btn = (TGButton *) gTQSender; Int_t id = btn->WidgetId(); switch (id) { case HCId1: fHslider1->SetConstrained(fCheck1->GetState()); break; case HCId2: fHslider1->SetRelative(fCheck2->GetState()); break; default: break; } } void ModelInspectorGUI::DoExit() { printf("Exit application..."); gApplication->Terminate(0); } void ModelInspector(const char* infile = "", const char* workspaceName = "combined", const char* modelConfigName = "ModelConfig", const char* dataName = "obsData"){ #ifdef __CINT__ cout <<"You must use ACLIC for this. Use ModelInspector.C+"<<endl; return; #endif ///////////////////////////////////////////////////////////// // First part is just to access a user-defined file // or create the standard example file if it doesn't exist //////////////////////////////////////////////////////////// const char* filename = ""; if (!strcmp(infile,"")) filename = "results/example_combined_GaussExample_model.root"; else filename = infile; // Check if example input file exists TFile *file = TFile::Open(filename); // if input file was specified byt not found, quit if(!file && strcmp(infile,"")){ cout <<"file not found" << endl; return; } // if default file not found, try to create it if(!file ){ // Normally this would be run on the command line cout <<"will run standard hist2workspace example"<<endl; gROOT->ProcessLine(".! prepareHistFactory ."); gROOT->ProcessLine(".! hist2workspace config/example.xml"); cout <<"\n\n---------------------"<<endl; cout <<"Done creating example input"<<endl; cout <<"---------------------\n\n"<<endl; } // now try to access the file again file = TFile::Open(filename); if(!file){ // if it is still not there, then we can't continue cout << "Not able to run hist2workspace to create example input" <<endl; return; } ///////////////////////////////////////////////////////////// // Tutorial starts here //////////////////////////////////////////////////////////// // get the workspace out of the file RooWorkspace* w = (RooWorkspace*) file->Get(workspaceName); if(!w){ cout <<"workspace not found" << endl; return; } // get the modelConfig out of the file ModelConfig* mc = (ModelConfig*) w->obj(modelConfigName); // get the modelConfig out of the file RooAbsData* data = w->data(dataName); // make sure ingredients are found if(!data || !mc){ w->Print(); cout << "data or ModelConfig was not found" <<endl; return; } new ModelInspectorGUI(w,mc,data); } ModelInspector.C:1 ModelInspector.C:2 ModelInspector.C:3 ModelInspector.C:4 ModelInspector.C:5 ModelInspector.C:6 ModelInspector.C:7 ModelInspector.C:8 ModelInspector.C:9 ModelInspector.C:10 ModelInspector.C:11 ModelInspector.C:12 ModelInspector.C:13 ModelInspector.C:14 ModelInspector.C:15 ModelInspector.C:16 ModelInspector.C:17 ModelInspector.C:18 ModelInspector.C:19 ModelInspector.C:20 ModelInspector.C:21 ModelInspector.C:22 ModelInspector.C:23 ModelInspector.C:24 ModelInspector.C:25 ModelInspector.C:26 ModelInspector.C:27 ModelInspector.C:28 ModelInspector.C:29 ModelInspector.C:30 ModelInspector.C:31 ModelInspector.C:32 ModelInspector.C:33 ModelInspector.C:34 ModelInspector.C:35 ModelInspector.C:36 ModelInspector.C:37 ModelInspector.C:38 ModelInspector.C:39 ModelInspector.C:40 ModelInspector.C:41 ModelInspector.C:42 ModelInspector.C:43 ModelInspector.C:44 ModelInspector.C:45 ModelInspector.C:46 ModelInspector.C:47 ModelInspector.C:48 ModelInspector.C:49 ModelInspector.C:50 ModelInspector.C:51 ModelInspector.C:52 ModelInspector.C:53 ModelInspector.C:54 ModelInspector.C:55 ModelInspector.C:56 ModelInspector.C:57 ModelInspector.C:58 ModelInspector.C:59 ModelInspector.C:60 ModelInspector.C:61 ModelInspector.C:62 ModelInspector.C:63 ModelInspector.C:64 ModelInspector.C:65 ModelInspector.C:66 ModelInspector.C:67 ModelInspector.C:68 ModelInspector.C:69 ModelInspector.C:70 ModelInspector.C:71 ModelInspector.C:72 ModelInspector.C:73 ModelInspector.C:74 ModelInspector.C:75 ModelInspector.C:76 ModelInspector.C:77 ModelInspector.C:78 ModelInspector.C:79 ModelInspector.C:80 ModelInspector.C:81 ModelInspector.C:82 ModelInspector.C:83 ModelInspector.C:84 ModelInspector.C:85 ModelInspector.C:86 ModelInspector.C:87 ModelInspector.C:88 ModelInspector.C:89 ModelInspector.C:90 ModelInspector.C:91 ModelInspector.C:92 ModelInspector.C:93 ModelInspector.C:94 ModelInspector.C:95 ModelInspector.C:96 ModelInspector.C:97 ModelInspector.C:98 ModelInspector.C:99 ModelInspector.C:100 ModelInspector.C:101 ModelInspector.C:102 ModelInspector.C:103 ModelInspector.C:104 ModelInspector.C:105 ModelInspector.C:106 ModelInspector.C:107 ModelInspector.C:108 ModelInspector.C:109 ModelInspector.C:110 ModelInspector.C:111 ModelInspector.C:112 ModelInspector.C:113 ModelInspector.C:114 ModelInspector.C:115 ModelInspector.C:116 ModelInspector.C:117 ModelInspector.C:118 ModelInspector.C:119 ModelInspector.C:120 ModelInspector.C:121 ModelInspector.C:122 ModelInspector.C:123 ModelInspector.C:124 ModelInspector.C:125 ModelInspector.C:126 ModelInspector.C:127 ModelInspector.C:128 ModelInspector.C:129 ModelInspector.C:130 ModelInspector.C:131 ModelInspector.C:132 ModelInspector.C:133 ModelInspector.C:134 ModelInspector.C:135 ModelInspector.C:136 ModelInspector.C:137 ModelInspector.C:138 ModelInspector.C:139 ModelInspector.C:140 ModelInspector.C:141 ModelInspector.C:142 ModelInspector.C:143 ModelInspector.C:144 ModelInspector.C:145 ModelInspector.C:146 ModelInspector.C:147 ModelInspector.C:148 ModelInspector.C:149 ModelInspector.C:150 ModelInspector.C:151 ModelInspector.C:152 ModelInspector.C:153 ModelInspector.C:154 ModelInspector.C:155 ModelInspector.C:156 ModelInspector.C:157 ModelInspector.C:158 ModelInspector.C:159 ModelInspector.C:160 ModelInspector.C:161 ModelInspector.C:162 ModelInspector.C:163 ModelInspector.C:164 ModelInspector.C:165 ModelInspector.C:166 ModelInspector.C:167 ModelInspector.C:168 ModelInspector.C:169 ModelInspector.C:170 ModelInspector.C:171 ModelInspector.C:172 ModelInspector.C:173 ModelInspector.C:174 ModelInspector.C:175 ModelInspector.C:176 ModelInspector.C:177 ModelInspector.C:178 ModelInspector.C:179 ModelInspector.C:180 ModelInspector.C:181 ModelInspector.C:182 ModelInspector.C:183 ModelInspector.C:184 ModelInspector.C:185 ModelInspector.C:186 ModelInspector.C:187 ModelInspector.C:188 ModelInspector.C:189 ModelInspector.C:190 ModelInspector.C:191 ModelInspector.C:192 ModelInspector.C:193 ModelInspector.C:194 ModelInspector.C:195 ModelInspector.C:196 ModelInspector.C:197 ModelInspector.C:198 ModelInspector.C:199 ModelInspector.C:200 ModelInspector.C:201 ModelInspector.C:202 ModelInspector.C:203 ModelInspector.C:204 ModelInspector.C:205 ModelInspector.C:206 ModelInspector.C:207 ModelInspector.C:208 ModelInspector.C:209 ModelInspector.C:210 ModelInspector.C:211 ModelInspector.C:212 ModelInspector.C:213 ModelInspector.C:214 ModelInspector.C:215 ModelInspector.C:216 ModelInspector.C:217 ModelInspector.C:218 ModelInspector.C:219 ModelInspector.C:220 ModelInspector.C:221 ModelInspector.C:222 ModelInspector.C:223 ModelInspector.C:224 ModelInspector.C:225 ModelInspector.C:226 ModelInspector.C:227 ModelInspector.C:228 ModelInspector.C:229 ModelInspector.C:230 ModelInspector.C:231 ModelInspector.C:232 ModelInspector.C:233 ModelInspector.C:234 ModelInspector.C:235 ModelInspector.C:236 ModelInspector.C:237 ModelInspector.C:238 ModelInspector.C:239 ModelInspector.C:240 ModelInspector.C:241 ModelInspector.C:242 ModelInspector.C:243 ModelInspector.C:244 ModelInspector.C:245 ModelInspector.C:246 ModelInspector.C:247 ModelInspector.C:248 ModelInspector.C:249 ModelInspector.C:250 ModelInspector.C:251 ModelInspector.C:252 ModelInspector.C:253 ModelInspector.C:254 ModelInspector.C:255 ModelInspector.C:256 ModelInspector.C:257 ModelInspector.C:258 ModelInspector.C:259 ModelInspector.C:260 ModelInspector.C:261 ModelInspector.C:262 ModelInspector.C:263 ModelInspector.C:264 ModelInspector.C:265 ModelInspector.C:266 ModelInspector.C:267 ModelInspector.C:268 ModelInspector.C:269 ModelInspector.C:270 ModelInspector.C:271 ModelInspector.C:272 ModelInspector.C:273 ModelInspector.C:274 ModelInspector.C:275 ModelInspector.C:276 ModelInspector.C:277 ModelInspector.C:278 ModelInspector.C:279 ModelInspector.C:280 ModelInspector.C:281 ModelInspector.C:282 ModelInspector.C:283 ModelInspector.C:284 ModelInspector.C:285 ModelInspector.C:286 ModelInspector.C:287 ModelInspector.C:288 ModelInspector.C:289 ModelInspector.C:290 ModelInspector.C:291 ModelInspector.C:292 ModelInspector.C:293 ModelInspector.C:294 ModelInspector.C:295 ModelInspector.C:296 ModelInspector.C:297 ModelInspector.C:298 ModelInspector.C:299 ModelInspector.C:300 ModelInspector.C:301 ModelInspector.C:302 ModelInspector.C:303 ModelInspector.C:304 ModelInspector.C:305 ModelInspector.C:306 ModelInspector.C:307 ModelInspector.C:308 ModelInspector.C:309 ModelInspector.C:310 ModelInspector.C:311 ModelInspector.C:312 ModelInspector.C:313 ModelInspector.C:314 ModelInspector.C:315 ModelInspector.C:316 ModelInspector.C:317 ModelInspector.C:318 ModelInspector.C:319 ModelInspector.C:320 ModelInspector.C:321 ModelInspector.C:322 ModelInspector.C:323 ModelInspector.C:324 ModelInspector.C:325 ModelInspector.C:326 ModelInspector.C:327 ModelInspector.C:328 ModelInspector.C:329 ModelInspector.C:330 ModelInspector.C:331 ModelInspector.C:332 ModelInspector.C:333 ModelInspector.C:334 ModelInspector.C:335 ModelInspector.C:336 ModelInspector.C:337 ModelInspector.C:338 ModelInspector.C:339 ModelInspector.C:340 ModelInspector.C:341 ModelInspector.C:342 ModelInspector.C:343 ModelInspector.C:344 ModelInspector.C:345 ModelInspector.C:346 ModelInspector.C:347 ModelInspector.C:348 ModelInspector.C:349 ModelInspector.C:350 ModelInspector.C:351 ModelInspector.C:352 ModelInspector.C:353 ModelInspector.C:354 ModelInspector.C:355 ModelInspector.C:356 ModelInspector.C:357 ModelInspector.C:358 ModelInspector.C:359 ModelInspector.C:360 ModelInspector.C:361 ModelInspector.C:362 ModelInspector.C:363 ModelInspector.C:364 ModelInspector.C:365 ModelInspector.C:366 ModelInspector.C:367 ModelInspector.C:368 ModelInspector.C:369 ModelInspector.C:370 ModelInspector.C:371 ModelInspector.C:372 ModelInspector.C:373 ModelInspector.C:374 ModelInspector.C:375 ModelInspector.C:376 ModelInspector.C:377 ModelInspector.C:378 ModelInspector.C:379 ModelInspector.C:380 ModelInspector.C:381 ModelInspector.C:382 ModelInspector.C:383 ModelInspector.C:384 ModelInspector.C:385 ModelInspector.C:386 ModelInspector.C:387 ModelInspector.C:388 ModelInspector.C:389 ModelInspector.C:390 ModelInspector.C:391 ModelInspector.C:392 ModelInspector.C:393 ModelInspector.C:394 ModelInspector.C:395 ModelInspector.C:396 ModelInspector.C:397 ModelInspector.C:398 ModelInspector.C:399 ModelInspector.C:400 ModelInspector.C:401 ModelInspector.C:402 ModelInspector.C:403 ModelInspector.C:404 ModelInspector.C:405 ModelInspector.C:406 ModelInspector.C:407 ModelInspector.C:408 ModelInspector.C:409 ModelInspector.C:410 ModelInspector.C:411 ModelInspector.C:412 ModelInspector.C:413 ModelInspector.C:414 ModelInspector.C:415 ModelInspector.C:416 ModelInspector.C:417 ModelInspector.C:418 ModelInspector.C:419 ModelInspector.C:420 ModelInspector.C:421 ModelInspector.C:422 ModelInspector.C:423 ModelInspector.C:424 ModelInspector.C:425 ModelInspector.C:426 ModelInspector.C:427 ModelInspector.C:428 ModelInspector.C:429 ModelInspector.C:430 ModelInspector.C:431 ModelInspector.C:432 ModelInspector.C:433 ModelInspector.C:434 ModelInspector.C:435 ModelInspector.C:436 ModelInspector.C:437 ModelInspector.C:438 ModelInspector.C:439 ModelInspector.C:440 ModelInspector.C:441 ModelInspector.C:442 ModelInspector.C:443 ModelInspector.C:444 ModelInspector.C:445 ModelInspector.C:446 ModelInspector.C:447 ModelInspector.C:448 ModelInspector.C:449 ModelInspector.C:450 ModelInspector.C:451 ModelInspector.C:452 ModelInspector.C:453 ModelInspector.C:454 ModelInspector.C:455 ModelInspector.C:456 ModelInspector.C:457 ModelInspector.C:458 ModelInspector.C:459 ModelInspector.C:460 ModelInspector.C:461 ModelInspector.C:462 ModelInspector.C:463 ModelInspector.C:464 ModelInspector.C:465 ModelInspector.C:466 ModelInspector.C:467 ModelInspector.C:468 ModelInspector.C:469 ModelInspector.C:470 ModelInspector.C:471 ModelInspector.C:472 ModelInspector.C:473 ModelInspector.C:474 ModelInspector.C:475 ModelInspector.C:476 ModelInspector.C:477 ModelInspector.C:478 ModelInspector.C:479 ModelInspector.C:480 ModelInspector.C:481 ModelInspector.C:482 ModelInspector.C:483 ModelInspector.C:484 ModelInspector.C:485 ModelInspector.C:486 ModelInspector.C:487 ModelInspector.C:488 ModelInspector.C:489 ModelInspector.C:490 ModelInspector.C:491 ModelInspector.C:492 ModelInspector.C:493 ModelInspector.C:494 ModelInspector.C:495 ModelInspector.C:496 ModelInspector.C:497 ModelInspector.C:498 ModelInspector.C:499 ModelInspector.C:500 ModelInspector.C:501 ModelInspector.C:502 ModelInspector.C:503 ModelInspector.C:504 ModelInspector.C:505 ModelInspector.C:506 ModelInspector.C:507 ModelInspector.C:508 ModelInspector.C:509 ModelInspector.C:510 ModelInspector.C:511 ModelInspector.C:512 ModelInspector.C:513 ModelInspector.C:514 ModelInspector.C:515 ModelInspector.C:516 ModelInspector.C:517 ModelInspector.C:518 ModelInspector.C:519 ModelInspector.C:520 ModelInspector.C:521 ModelInspector.C:522 ModelInspector.C:523 ModelInspector.C:524 ModelInspector.C:525 ModelInspector.C:526 ModelInspector.C:527 ModelInspector.C:528 ModelInspector.C:529 ModelInspector.C:530 ModelInspector.C:531 ModelInspector.C:532 ModelInspector.C:533 ModelInspector.C:534 ModelInspector.C:535 ModelInspector.C:536 ModelInspector.C:537 ModelInspector.C:538 ModelInspector.C:539 ModelInspector.C:540 ModelInspector.C:541 ModelInspector.C:542 ModelInspector.C:543 ModelInspector.C:544 ModelInspector.C:545 ModelInspector.C:546 ModelInspector.C:547 ModelInspector.C:548 ModelInspector.C:549 ModelInspector.C:550 ModelInspector.C:551 ModelInspector.C:552 ModelInspector.C:553 ModelInspector.C:554 ModelInspector.C:555 ModelInspector.C:556 ModelInspector.C:557 ModelInspector.C:558 ModelInspector.C:559 ModelInspector.C:560 ModelInspector.C:561 ModelInspector.C:562 ModelInspector.C:563 ModelInspector.C:564 ModelInspector.C:565 ModelInspector.C:566 ModelInspector.C:567 ModelInspector.C:568 ModelInspector.C:569 ModelInspector.C:570 ModelInspector.C:571 ModelInspector.C:572 |
|