#include <iostream>
#include <iomanip>
#include <algorithm>
#include "TVectorF.h"
#include "TVectorD.h"
#include "TMatrixD.h"
#include "TMatrixDBase.h"
#ifndef ROOT_TMVA_MsgLogger
#include "TMVA/MsgLogger.h"
#endif
#ifndef ROOT_TMVA_VariableDecorrTransform
#include "TMVA/VariableDecorrTransform.h"
#endif
#ifndef ROOT_TMVA_Tools
#include "TMVA/Tools.h"
#endif
#ifndef ROOT_TMVA_DataSet
#include "TMVA/DataSet.h"
#endif
ClassImp(TMVA::VariableDecorrTransform)
TMVA::VariableDecorrTransform::VariableDecorrTransform( DataSetInfo& dsi )
: VariableTransformBase( dsi, Types::kDecorrelated, "Deco" )
{
}
TMVA::VariableDecorrTransform::~VariableDecorrTransform()
{
for (std::vector<TMatrixD*>::iterator it = fDecorrMatrices.begin(); it != fDecorrMatrices.end(); it++) {
if ((*it) != 0) delete (*it);
}
}
void TMVA::VariableDecorrTransform::Initialize()
{
}
Bool_t TMVA::VariableDecorrTransform::PrepareTransformation (const std::vector<Event*>& events)
{
Initialize();
if (!IsEnabled() || IsCreated()) return kTRUE;
Log() << kINFO << "Preparing the Decorrelation transformation..." << Endl;
Int_t inputSize = fGet.size();
SetNVariables(inputSize);
if (inputSize > 200) {
Log() << kINFO << "----------------------------------------------------------------------------"
<< Endl;
Log() << kINFO
<< ": More than 200 variables, will not calculate decorrelation matrix "
<< "!" << Endl;
Log() << kINFO << "----------------------------------------------------------------------------"
<< Endl;
return kFALSE;
}
CalcSQRMats( events, GetNClasses() );
SetCreated( kTRUE );
return kTRUE;
}
std::vector<TString>* TMVA::VariableDecorrTransform::GetTransformationStrings( Int_t cls ) const
{
Int_t whichMatrix = cls;
if (cls < 0 || cls > GetNClasses()) whichMatrix = GetNClasses();
TMatrixD* m = fDecorrMatrices.at(whichMatrix);
if (m == 0) {
if (whichMatrix == GetNClasses() )
Log() << kFATAL << "Transformation matrix all classes is not defined"
<< Endl;
else
Log() << kFATAL << "Transformation matrix for class " << whichMatrix << " is not defined"
<< Endl;
}
const Int_t nvar = fGet.size();
std::vector<TString>* strVec = new std::vector<TString>;
for (Int_t ivar=0; ivar<nvar; ivar++) {
TString str( "" );
for (Int_t jvar=0; jvar<nvar; jvar++) {
str += ((*m)(ivar,jvar) > 0) ? " + " : " - ";
Char_t type = fGet.at(jvar).first;
Int_t idx = fGet.at(jvar).second;
switch( type ) {
case 'v':
str += Form( "%10.5g*[%s]", TMath::Abs((*m)(ivar,jvar)), Variables()[idx].GetLabel().Data() );
break;
case 't':
str += Form( "%10.5g*[%s]", TMath::Abs((*m)(ivar,jvar)), Targets()[idx].GetLabel().Data() );
break;
case 's':
str += Form( "%10.5g*[%s]", TMath::Abs((*m)(ivar,jvar)), Spectators()[idx].GetLabel().Data() );
break;
default:
Log() << kFATAL << "VariableDecorrTransform::GetTransformationStrings : unknown type '" << type << "'." << Endl;
}
}
strVec->push_back( str );
}
return strVec;
}
const TMVA::Event* TMVA::VariableDecorrTransform::Transform( const TMVA::Event* const ev, Int_t cls ) const
{
if (!IsCreated())
Log() << kFATAL << "Transformation matrix not yet created"
<< Endl;
Int_t whichMatrix = cls;
if (cls < 0 || cls >= (int) fDecorrMatrices.size()) whichMatrix = fDecorrMatrices.size()-1;
TMatrixD* m = fDecorrMatrices.at(whichMatrix);
if (m == 0) {
if (whichMatrix == GetNClasses() )
Log() << kFATAL << "Transformation matrix all classes is not defined"
<< Endl;
else
Log() << kFATAL << "Transformation matrix for class " << whichMatrix << " is not defined"
<< Endl;
}
if (fTransformedEvent==0 || fTransformedEvent->GetNVariables()!=ev->GetNVariables()) {
if (fTransformedEvent!=0) { delete fTransformedEvent; fTransformedEvent = 0; }
fTransformedEvent = new Event();
}
const Int_t nvar = fGet.size();
std::vector<Float_t> input;
std::vector<Char_t> mask;
Bool_t hasMaskedEntries = GetInput( ev, input, mask );
if( hasMaskedEntries ){
UInt_t numMasked = std::count(mask.begin(), mask.end(), (Char_t)kTRUE);
UInt_t numOK = std::count(mask.begin(), mask.end(), (Char_t)kFALSE);
if( numMasked>0 && numOK>0 ){
Log() << kFATAL << "You mixed variables and targets in the decorrelation transformation. This is not possible." << Endl;
}
SetOutput( fTransformedEvent, input, mask, ev );
return fTransformedEvent;
}
TVectorD vec( nvar );
for (Int_t ivar=0; ivar<nvar; ivar++) vec(ivar) = input.at(ivar);
vec *= *m;
input.clear();
for (Int_t ivar=0; ivar<nvar; ivar++) input.push_back( vec(ivar) );
SetOutput( fTransformedEvent, input, mask, ev );
return fTransformedEvent;
}
const TMVA::Event* TMVA::VariableDecorrTransform::InverseTransform( const TMVA::Event* const , Int_t ) const
{
Log() << kFATAL << "Inverse transformation for decorrelation transformation not yet implemented. Hence, this transformation cannot be applied together with regression if targets should be transformed. Please contact the authors if necessary." << Endl;
return fBackTransformedEvent;
}
void TMVA::VariableDecorrTransform::CalcSQRMats( const std::vector< Event*>& events, Int_t maxCls )
{
for (std::vector<TMatrixD*>::iterator it = fDecorrMatrices.begin();
it != fDecorrMatrices.end(); it++)
if (0 != (*it) ) { delete (*it); *it=0; }
const UInt_t matNum = (maxCls<=1)?maxCls:maxCls+1;
fDecorrMatrices.resize( matNum, (TMatrixD*) 0 );
std::vector<TMatrixDSym*>* covMat = gTools().CalcCovarianceMatrices( events, maxCls, this );
for (UInt_t cls=0; cls<matNum; cls++) {
TMatrixD* sqrMat = gTools().GetSQRootMatrix( covMat->at(cls) );
if ( sqrMat==0 )
Log() << kFATAL << "<GetSQRMats> Zero pointer returned for SQR matrix" << Endl;
fDecorrMatrices[cls] = sqrMat;
delete (*covMat)[cls];
}
delete covMat;
}
void TMVA::VariableDecorrTransform::WriteTransformationToStream( std::ostream& o ) const
{
Int_t cls = 0;
Int_t dp = o.precision();
for (std::vector<TMatrixD*>::const_iterator itm = fDecorrMatrices.begin(); itm != fDecorrMatrices.end(); itm++) {
o << "# correlation matrix " << std::endl;
TMatrixD* mat = (*itm);
o << cls << " " << mat->GetNrows() << " x " << mat->GetNcols() << std::endl;
for (Int_t row = 0; row<mat->GetNrows(); row++) {
for (Int_t col = 0; col<mat->GetNcols(); col++) {
o << std::setprecision(12) << std::setw(20) << (*mat)[row][col] << " ";
}
o << std::endl;
}
cls++;
}
o << "##" << std::endl;
o << std::setprecision(dp);
}
void TMVA::VariableDecorrTransform::AttachXMLTo(void* parent)
{
void* trf = gTools().AddChild(parent, "Transform");
gTools().AddAttr(trf,"Name", "Decorrelation");
VariableTransformBase::AttachXMLTo( trf );
for (std::vector<TMatrixD*>::const_iterator itm = fDecorrMatrices.begin(); itm != fDecorrMatrices.end(); itm++) {
TMatrixD* mat = (*itm);
gTools().WriteTMatrixDToXML(trf,"Matrix",mat);
}
}
void TMVA::VariableDecorrTransform::ReadFromXML( void* trfnode )
{
for( std::vector<TMatrixD*>::iterator it = fDecorrMatrices.begin(); it != fDecorrMatrices.end(); it++ )
if( (*it) != 0 ) delete (*it);
fDecorrMatrices.clear();
Bool_t newFormat = kFALSE;
void* inpnode = NULL;
inpnode = gTools().GetChild(trfnode, "Selection");
if( inpnode!=NULL )
newFormat = kTRUE;
void* ch = NULL;
if( newFormat ){
VariableTransformBase::ReadFromXML( inpnode );
ch = gTools().GetNextChild(inpnode);
}else
ch = gTools().GetChild(trfnode);
while(ch!=0) {
Int_t nrows, ncols;
gTools().ReadAttr(ch, "Rows", nrows);
gTools().ReadAttr(ch, "Columns", ncols);
TMatrixD* mat = new TMatrixD(nrows,ncols);
const char* content = gTools().GetContent(ch);
std::stringstream s(content);
for (Int_t row = 0; row<nrows; row++) {
for (Int_t col = 0; col<ncols; col++) {
s >> (*mat)[row][col];
}
}
fDecorrMatrices.push_back(mat);
ch = gTools().GetNextChild(ch);
}
SetCreated();
}
void TMVA::VariableDecorrTransform::ReadTransformationFromStream( std::istream& istr, const TString& classname )
{
char buf[512];
istr.getline(buf,512);
TString strvar, dummy;
Int_t nrows(0), ncols(0);
UInt_t classIdx=0;
while (!(buf[0]=='#'&& buf[1]=='#')) {
char* p = buf;
while (*p==' ' || *p=='\t') p++;
if (*p=='#' || *p=='\0') {
istr.getline(buf,512);
continue;
}
std::stringstream sstr(buf);
sstr >> strvar;
if (strvar=="signal" || strvar=="background") {
UInt_t cls=0;
if(strvar=="background") cls=1;
if(strvar==classname) classIdx = cls;
sstr >> nrows >> dummy >> ncols;
if (fDecorrMatrices.size() <= cls ) fDecorrMatrices.resize(cls+1);
if (fDecorrMatrices.at(cls) != 0) delete fDecorrMatrices.at(cls);
TMatrixD* mat = fDecorrMatrices.at(cls) = new TMatrixD(nrows,ncols);
for (Int_t row = 0; row<mat->GetNrows(); row++) {
for (Int_t col = 0; col<mat->GetNcols(); col++) {
istr >> (*mat)[row][col];
}
}
}
istr.getline(buf,512);
}
fDecorrMatrices.push_back( new TMatrixD(*fDecorrMatrices[classIdx]) );
SetCreated();
}
void TMVA::VariableDecorrTransform::PrintTransformation( std::ostream& )
{
Int_t cls = 0;
for (std::vector<TMatrixD*>::iterator itm = fDecorrMatrices.begin(); itm != fDecorrMatrices.end(); itm++) {
Log() << kINFO << "Transformation matrix "<< cls <<":" << Endl;
(*itm)->Print();
}
}
void TMVA::VariableDecorrTransform::MakeFunction( std::ostream& fout, const TString& fcncName, Int_t part, UInt_t trCounter, Int_t )
{
Int_t dp = fout.precision();
UInt_t numC = fDecorrMatrices.size();
if (part==1) {
TMatrixD* mat = fDecorrMatrices.at(0);
fout << std::endl;
fout << " double fDecTF_"<<trCounter<<"["<<numC<<"]["<<mat->GetNrows()<<"]["<<mat->GetNcols()<<"];" << std::endl;
}
if (part==2) {
fout << std::endl;
fout << "//_______________________________________________________________________" << std::endl;
fout << "inline void " << fcncName << "::InitTransform_"<<trCounter<<"()" << std::endl;
fout << "{" << std::endl;
fout << " // Decorrelation transformation, initialisation" << std::endl;
for (UInt_t icls = 0; icls < numC; icls++){
TMatrixD* matx = fDecorrMatrices.at(icls);
for (int i=0; i<matx->GetNrows(); i++) {
for (int j=0; j<matx->GetNcols(); j++) {
fout << " fDecTF_"<<trCounter<<"["<<icls<<"]["<<i<<"]["<<j<<"] = " << std::setprecision(12) << (*matx)[i][j] << ";" << std::endl;
}
}
}
fout << "}" << std::endl;
fout << std::endl;
TMatrixD* matx = fDecorrMatrices.at(0);
fout << "//_______________________________________________________________________" << std::endl;
fout << "inline void " << fcncName << "::Transform_"<<trCounter<<"( std::vector<double>& iv, int cls) const" << std::endl;
fout << "{" << std::endl;
fout << " // Decorrelation transformation" << std::endl;
fout << " if (cls < 0 || cls > "<<GetNClasses()<<") {"<< std::endl;
fout << " if ("<<GetNClasses()<<" > 1 ) cls = "<<GetNClasses()<<";"<< std::endl;
fout << " else cls = "<<(fDecorrMatrices.size()==1?0:2)<<";"<< std::endl;
fout << " }"<< std::endl;
VariableTransformBase::MakeFunction(fout, fcncName, 0, trCounter, 0 );
fout << " std::vector<double> tv;" << std::endl;
fout << " for (int i=0; i<"<<matx->GetNrows()<<";i++) {" << std::endl;
fout << " double v = 0;" << std::endl;
fout << " for (int j=0; j<"<<matx->GetNcols()<<"; j++)" << std::endl;
fout << " v += iv[indicesGet.at(j)] * fDecTF_"<<trCounter<<"[cls][i][j];" << std::endl;
fout << " tv.push_back(v);" << std::endl;
fout << " }" << std::endl;
fout << " for (int i=0; i<"<<matx->GetNrows()<<";i++) iv[indicesPut.at(i)] = tv[i];" << std::endl;
fout << "}" << std::endl;
}
fout << std::setprecision(dp);
}
VariableDecorrTransform.cxx:1 VariableDecorrTransform.cxx:2 VariableDecorrTransform.cxx:3 VariableDecorrTransform.cxx:4 VariableDecorrTransform.cxx:5 VariableDecorrTransform.cxx:6 VariableDecorrTransform.cxx:7 VariableDecorrTransform.cxx:8 VariableDecorrTransform.cxx:9 VariableDecorrTransform.cxx:10 VariableDecorrTransform.cxx:11 VariableDecorrTransform.cxx:12 VariableDecorrTransform.cxx:13 VariableDecorrTransform.cxx:14 VariableDecorrTransform.cxx:15 VariableDecorrTransform.cxx:16 VariableDecorrTransform.cxx:17 VariableDecorrTransform.cxx:18 VariableDecorrTransform.cxx:19 VariableDecorrTransform.cxx:20 VariableDecorrTransform.cxx:21 VariableDecorrTransform.cxx:22 VariableDecorrTransform.cxx:23 VariableDecorrTransform.cxx:24 VariableDecorrTransform.cxx:25 VariableDecorrTransform.cxx:26 VariableDecorrTransform.cxx:27 VariableDecorrTransform.cxx:28 VariableDecorrTransform.cxx:29 VariableDecorrTransform.cxx:30 VariableDecorrTransform.cxx:31 VariableDecorrTransform.cxx:32 VariableDecorrTransform.cxx:33 VariableDecorrTransform.cxx:34 VariableDecorrTransform.cxx:35 VariableDecorrTransform.cxx:36 VariableDecorrTransform.cxx:37 VariableDecorrTransform.cxx:38 VariableDecorrTransform.cxx:39 VariableDecorrTransform.cxx:40 VariableDecorrTransform.cxx:41 VariableDecorrTransform.cxx:42 VariableDecorrTransform.cxx:43 VariableDecorrTransform.cxx:44 VariableDecorrTransform.cxx:45 VariableDecorrTransform.cxx:46 VariableDecorrTransform.cxx:47 VariableDecorrTransform.cxx:48 VariableDecorrTransform.cxx:49 VariableDecorrTransform.cxx:50 VariableDecorrTransform.cxx:51 VariableDecorrTransform.cxx:52 VariableDecorrTransform.cxx:53 VariableDecorrTransform.cxx:54 VariableDecorrTransform.cxx:55 VariableDecorrTransform.cxx:56 VariableDecorrTransform.cxx:57 VariableDecorrTransform.cxx:58 VariableDecorrTransform.cxx:59 VariableDecorrTransform.cxx:60 VariableDecorrTransform.cxx:61 VariableDecorrTransform.cxx:62 VariableDecorrTransform.cxx:63 VariableDecorrTransform.cxx:64 VariableDecorrTransform.cxx:65 VariableDecorrTransform.cxx:66 VariableDecorrTransform.cxx:67 VariableDecorrTransform.cxx:68 VariableDecorrTransform.cxx:69 VariableDecorrTransform.cxx:70 VariableDecorrTransform.cxx:71 VariableDecorrTransform.cxx:72 VariableDecorrTransform.cxx:73 VariableDecorrTransform.cxx:74 VariableDecorrTransform.cxx:75 VariableDecorrTransform.cxx:76 VariableDecorrTransform.cxx:77 VariableDecorrTransform.cxx:78 VariableDecorrTransform.cxx:79 VariableDecorrTransform.cxx:80 VariableDecorrTransform.cxx:81 VariableDecorrTransform.cxx:82 VariableDecorrTransform.cxx:83 VariableDecorrTransform.cxx:84 VariableDecorrTransform.cxx:85 VariableDecorrTransform.cxx:86 VariableDecorrTransform.cxx:87 VariableDecorrTransform.cxx:88 VariableDecorrTransform.cxx:89 VariableDecorrTransform.cxx:90 VariableDecorrTransform.cxx:91 VariableDecorrTransform.cxx:92 VariableDecorrTransform.cxx:93 VariableDecorrTransform.cxx:94 VariableDecorrTransform.cxx:95 VariableDecorrTransform.cxx:96 VariableDecorrTransform.cxx:97 VariableDecorrTransform.cxx:98 VariableDecorrTransform.cxx:99 VariableDecorrTransform.cxx:100 VariableDecorrTransform.cxx:101 VariableDecorrTransform.cxx:102 VariableDecorrTransform.cxx:103 VariableDecorrTransform.cxx:104 VariableDecorrTransform.cxx:105 VariableDecorrTransform.cxx:106 VariableDecorrTransform.cxx:107 VariableDecorrTransform.cxx:108 VariableDecorrTransform.cxx:109 VariableDecorrTransform.cxx:110 VariableDecorrTransform.cxx:111 VariableDecorrTransform.cxx:112 VariableDecorrTransform.cxx:113 VariableDecorrTransform.cxx:114 VariableDecorrTransform.cxx:115 VariableDecorrTransform.cxx:116 VariableDecorrTransform.cxx:117 VariableDecorrTransform.cxx:118 VariableDecorrTransform.cxx:119 VariableDecorrTransform.cxx:120 VariableDecorrTransform.cxx:121 VariableDecorrTransform.cxx:122 VariableDecorrTransform.cxx:123 VariableDecorrTransform.cxx:124 VariableDecorrTransform.cxx:125 VariableDecorrTransform.cxx:126 VariableDecorrTransform.cxx:127 VariableDecorrTransform.cxx:128 VariableDecorrTransform.cxx:129 VariableDecorrTransform.cxx:130 VariableDecorrTransform.cxx:131 VariableDecorrTransform.cxx:132 VariableDecorrTransform.cxx:133 VariableDecorrTransform.cxx:134 VariableDecorrTransform.cxx:135 VariableDecorrTransform.cxx:136 VariableDecorrTransform.cxx:137 VariableDecorrTransform.cxx:138 VariableDecorrTransform.cxx:139 VariableDecorrTransform.cxx:140 VariableDecorrTransform.cxx:141 VariableDecorrTransform.cxx:142 VariableDecorrTransform.cxx:143 VariableDecorrTransform.cxx:144 VariableDecorrTransform.cxx:145 VariableDecorrTransform.cxx:146 VariableDecorrTransform.cxx:147 VariableDecorrTransform.cxx:148 VariableDecorrTransform.cxx:149 VariableDecorrTransform.cxx:150 VariableDecorrTransform.cxx:151 VariableDecorrTransform.cxx:152 VariableDecorrTransform.cxx:153 VariableDecorrTransform.cxx:154 VariableDecorrTransform.cxx:155 VariableDecorrTransform.cxx:156 VariableDecorrTransform.cxx:157 VariableDecorrTransform.cxx:158 VariableDecorrTransform.cxx:159 VariableDecorrTransform.cxx:160 VariableDecorrTransform.cxx:161 VariableDecorrTransform.cxx:162 VariableDecorrTransform.cxx:163 VariableDecorrTransform.cxx:164 VariableDecorrTransform.cxx:165 VariableDecorrTransform.cxx:166 VariableDecorrTransform.cxx:167 VariableDecorrTransform.cxx:168 VariableDecorrTransform.cxx:169 VariableDecorrTransform.cxx:170 VariableDecorrTransform.cxx:171 VariableDecorrTransform.cxx:172 VariableDecorrTransform.cxx:173 VariableDecorrTransform.cxx:174 VariableDecorrTransform.cxx:175 VariableDecorrTransform.cxx:176 VariableDecorrTransform.cxx:177 VariableDecorrTransform.cxx:178 VariableDecorrTransform.cxx:179 VariableDecorrTransform.cxx:180 VariableDecorrTransform.cxx:181 VariableDecorrTransform.cxx:182 VariableDecorrTransform.cxx:183 VariableDecorrTransform.cxx:184 VariableDecorrTransform.cxx:185 VariableDecorrTransform.cxx:186 VariableDecorrTransform.cxx:187 VariableDecorrTransform.cxx:188 VariableDecorrTransform.cxx:189 VariableDecorrTransform.cxx:190 VariableDecorrTransform.cxx:191 VariableDecorrTransform.cxx:192 VariableDecorrTransform.cxx:193 VariableDecorrTransform.cxx:194 VariableDecorrTransform.cxx:195 VariableDecorrTransform.cxx:196 VariableDecorrTransform.cxx:197 VariableDecorrTransform.cxx:198 VariableDecorrTransform.cxx:199 VariableDecorrTransform.cxx:200 VariableDecorrTransform.cxx:201 VariableDecorrTransform.cxx:202 VariableDecorrTransform.cxx:203 VariableDecorrTransform.cxx:204 VariableDecorrTransform.cxx:205 VariableDecorrTransform.cxx:206 VariableDecorrTransform.cxx:207 VariableDecorrTransform.cxx:208 VariableDecorrTransform.cxx:209 VariableDecorrTransform.cxx:210 VariableDecorrTransform.cxx:211 VariableDecorrTransform.cxx:212 VariableDecorrTransform.cxx:213 VariableDecorrTransform.cxx:214 VariableDecorrTransform.cxx:215 VariableDecorrTransform.cxx:216 VariableDecorrTransform.cxx:217 VariableDecorrTransform.cxx:218 VariableDecorrTransform.cxx:219 VariableDecorrTransform.cxx:220 VariableDecorrTransform.cxx:221 VariableDecorrTransform.cxx:222 VariableDecorrTransform.cxx:223 VariableDecorrTransform.cxx:224 VariableDecorrTransform.cxx:225 VariableDecorrTransform.cxx:226 VariableDecorrTransform.cxx:227 VariableDecorrTransform.cxx:228 VariableDecorrTransform.cxx:229 VariableDecorrTransform.cxx:230 VariableDecorrTransform.cxx:231 VariableDecorrTransform.cxx:232 VariableDecorrTransform.cxx:233 VariableDecorrTransform.cxx:234 VariableDecorrTransform.cxx:235 VariableDecorrTransform.cxx:236 VariableDecorrTransform.cxx:237 VariableDecorrTransform.cxx:238 VariableDecorrTransform.cxx:239 VariableDecorrTransform.cxx:240 VariableDecorrTransform.cxx:241 VariableDecorrTransform.cxx:242 VariableDecorrTransform.cxx:243 VariableDecorrTransform.cxx:244 VariableDecorrTransform.cxx:245 VariableDecorrTransform.cxx:246 VariableDecorrTransform.cxx:247 VariableDecorrTransform.cxx:248 VariableDecorrTransform.cxx:249 VariableDecorrTransform.cxx:250 VariableDecorrTransform.cxx:251 VariableDecorrTransform.cxx:252 VariableDecorrTransform.cxx:253 VariableDecorrTransform.cxx:254 VariableDecorrTransform.cxx:255 VariableDecorrTransform.cxx:256 VariableDecorrTransform.cxx:257 VariableDecorrTransform.cxx:258 VariableDecorrTransform.cxx:259 VariableDecorrTransform.cxx:260 VariableDecorrTransform.cxx:261 VariableDecorrTransform.cxx:262 VariableDecorrTransform.cxx:263 VariableDecorrTransform.cxx:264 VariableDecorrTransform.cxx:265 VariableDecorrTransform.cxx:266 VariableDecorrTransform.cxx:267 VariableDecorrTransform.cxx:268 VariableDecorrTransform.cxx:269 VariableDecorrTransform.cxx:270 VariableDecorrTransform.cxx:271 VariableDecorrTransform.cxx:272 VariableDecorrTransform.cxx:273 VariableDecorrTransform.cxx:274 VariableDecorrTransform.cxx:275 VariableDecorrTransform.cxx:276 VariableDecorrTransform.cxx:277 VariableDecorrTransform.cxx:278 VariableDecorrTransform.cxx:279 VariableDecorrTransform.cxx:280 VariableDecorrTransform.cxx:281 VariableDecorrTransform.cxx:282 VariableDecorrTransform.cxx:283 VariableDecorrTransform.cxx:284 VariableDecorrTransform.cxx:285 VariableDecorrTransform.cxx:286 VariableDecorrTransform.cxx:287 VariableDecorrTransform.cxx:288 VariableDecorrTransform.cxx:289 VariableDecorrTransform.cxx:290 VariableDecorrTransform.cxx:291 VariableDecorrTransform.cxx:292 VariableDecorrTransform.cxx:293 VariableDecorrTransform.cxx:294 VariableDecorrTransform.cxx:295 VariableDecorrTransform.cxx:296 VariableDecorrTransform.cxx:297 VariableDecorrTransform.cxx:298 VariableDecorrTransform.cxx:299 VariableDecorrTransform.cxx:300 VariableDecorrTransform.cxx:301 VariableDecorrTransform.cxx:302 VariableDecorrTransform.cxx:303 VariableDecorrTransform.cxx:304 VariableDecorrTransform.cxx:305 VariableDecorrTransform.cxx:306 VariableDecorrTransform.cxx:307 VariableDecorrTransform.cxx:308 VariableDecorrTransform.cxx:309 VariableDecorrTransform.cxx:310 VariableDecorrTransform.cxx:311 VariableDecorrTransform.cxx:312 VariableDecorrTransform.cxx:313 VariableDecorrTransform.cxx:314 VariableDecorrTransform.cxx:315 VariableDecorrTransform.cxx:316 VariableDecorrTransform.cxx:317 VariableDecorrTransform.cxx:318 VariableDecorrTransform.cxx:319 VariableDecorrTransform.cxx:320 VariableDecorrTransform.cxx:321 VariableDecorrTransform.cxx:322 VariableDecorrTransform.cxx:323 VariableDecorrTransform.cxx:324 VariableDecorrTransform.cxx:325 VariableDecorrTransform.cxx:326 VariableDecorrTransform.cxx:327 VariableDecorrTransform.cxx:328 VariableDecorrTransform.cxx:329 VariableDecorrTransform.cxx:330 VariableDecorrTransform.cxx:331 VariableDecorrTransform.cxx:332 VariableDecorrTransform.cxx:333 VariableDecorrTransform.cxx:334 VariableDecorrTransform.cxx:335 VariableDecorrTransform.cxx:336 VariableDecorrTransform.cxx:337 VariableDecorrTransform.cxx:338 VariableDecorrTransform.cxx:339 VariableDecorrTransform.cxx:340 VariableDecorrTransform.cxx:341 VariableDecorrTransform.cxx:342 VariableDecorrTransform.cxx:343 VariableDecorrTransform.cxx:344 VariableDecorrTransform.cxx:345 VariableDecorrTransform.cxx:346 VariableDecorrTransform.cxx:347 VariableDecorrTransform.cxx:348 VariableDecorrTransform.cxx:349 VariableDecorrTransform.cxx:350 VariableDecorrTransform.cxx:351 VariableDecorrTransform.cxx:352 VariableDecorrTransform.cxx:353 VariableDecorrTransform.cxx:354 VariableDecorrTransform.cxx:355 VariableDecorrTransform.cxx:356 VariableDecorrTransform.cxx:357 VariableDecorrTransform.cxx:358 VariableDecorrTransform.cxx:359 VariableDecorrTransform.cxx:360 VariableDecorrTransform.cxx:361 VariableDecorrTransform.cxx:362 VariableDecorrTransform.cxx:363 VariableDecorrTransform.cxx:364 VariableDecorrTransform.cxx:365 VariableDecorrTransform.cxx:366 VariableDecorrTransform.cxx:367 VariableDecorrTransform.cxx:368 VariableDecorrTransform.cxx:369 VariableDecorrTransform.cxx:370 VariableDecorrTransform.cxx:371 VariableDecorrTransform.cxx:372 VariableDecorrTransform.cxx:373 VariableDecorrTransform.cxx:374 VariableDecorrTransform.cxx:375 VariableDecorrTransform.cxx:376 VariableDecorrTransform.cxx:377 VariableDecorrTransform.cxx:378 VariableDecorrTransform.cxx:379 VariableDecorrTransform.cxx:380 VariableDecorrTransform.cxx:381 VariableDecorrTransform.cxx:382 VariableDecorrTransform.cxx:383 VariableDecorrTransform.cxx:384 VariableDecorrTransform.cxx:385 VariableDecorrTransform.cxx:386 VariableDecorrTransform.cxx:387 VariableDecorrTransform.cxx:388 VariableDecorrTransform.cxx:389 VariableDecorrTransform.cxx:390 VariableDecorrTransform.cxx:391 VariableDecorrTransform.cxx:392 VariableDecorrTransform.cxx:393 VariableDecorrTransform.cxx:394 VariableDecorrTransform.cxx:395 VariableDecorrTransform.cxx:396 VariableDecorrTransform.cxx:397 VariableDecorrTransform.cxx:398 VariableDecorrTransform.cxx:399 VariableDecorrTransform.cxx:400 VariableDecorrTransform.cxx:401 VariableDecorrTransform.cxx:402 VariableDecorrTransform.cxx:403 VariableDecorrTransform.cxx:404 VariableDecorrTransform.cxx:405 VariableDecorrTransform.cxx:406 VariableDecorrTransform.cxx:407 VariableDecorrTransform.cxx:408 VariableDecorrTransform.cxx:409 VariableDecorrTransform.cxx:410 VariableDecorrTransform.cxx:411 VariableDecorrTransform.cxx:412 VariableDecorrTransform.cxx:413 VariableDecorrTransform.cxx:414 VariableDecorrTransform.cxx:415 VariableDecorrTransform.cxx:416 VariableDecorrTransform.cxx:417 VariableDecorrTransform.cxx:418 VariableDecorrTransform.cxx:419 VariableDecorrTransform.cxx:420 VariableDecorrTransform.cxx:421 VariableDecorrTransform.cxx:422 VariableDecorrTransform.cxx:423 VariableDecorrTransform.cxx:424 VariableDecorrTransform.cxx:425 VariableDecorrTransform.cxx:426 VariableDecorrTransform.cxx:427 VariableDecorrTransform.cxx:428 VariableDecorrTransform.cxx:429 VariableDecorrTransform.cxx:430 VariableDecorrTransform.cxx:431 VariableDecorrTransform.cxx:432 VariableDecorrTransform.cxx:433 VariableDecorrTransform.cxx:434 VariableDecorrTransform.cxx:435 VariableDecorrTransform.cxx:436 VariableDecorrTransform.cxx:437 VariableDecorrTransform.cxx:438 VariableDecorrTransform.cxx:439 VariableDecorrTransform.cxx:440 VariableDecorrTransform.cxx:441 VariableDecorrTransform.cxx:442 VariableDecorrTransform.cxx:443 VariableDecorrTransform.cxx:444 VariableDecorrTransform.cxx:445 VariableDecorrTransform.cxx:446 VariableDecorrTransform.cxx:447 VariableDecorrTransform.cxx:448 VariableDecorrTransform.cxx:449 VariableDecorrTransform.cxx:450 VariableDecorrTransform.cxx:451 VariableDecorrTransform.cxx:452 VariableDecorrTransform.cxx:453 VariableDecorrTransform.cxx:454 VariableDecorrTransform.cxx:455 VariableDecorrTransform.cxx:456 VariableDecorrTransform.cxx:457 VariableDecorrTransform.cxx:458 VariableDecorrTransform.cxx:459 VariableDecorrTransform.cxx:460 VariableDecorrTransform.cxx:461 VariableDecorrTransform.cxx:462 VariableDecorrTransform.cxx:463 VariableDecorrTransform.cxx:464 VariableDecorrTransform.cxx:465 VariableDecorrTransform.cxx:466 VariableDecorrTransform.cxx:467 VariableDecorrTransform.cxx:468 VariableDecorrTransform.cxx:469