CMS 3D CMS Logo

NtupleManager Class Reference

#include <Alignment/CocoaAnalysis/interface/NtupleManager.h>

List of all members.

Public Member Functions

void BookNtuple ()
void FillChi2 ()
void FillFitParameters (MatrixMeschach *AtWAMatrix)
void FillMeasurements ()
void FillNtupleTree ()
void FillOptObjects (MatrixMeschach *AtWAMatrix)
void InitNtuple ()
 NtupleManager ()
void WriteNtuple ()
 ~NtupleManager ()

Static Public Member Functions

static NtupleManagergetInstance ()

Private Member Functions

void GetGlobalAngles (const HepRotation &rmGlob, double *theta)

Private Attributes

double Chi2CalibratedParameters
double Chi2Measurements
TClonesArray * CloneCopsMeas
TClonesArray * CloneDistancemeter1DimMeas
TClonesArray * CloneDistancemeterMeas
TClonesArray * CloneFitParam
TClonesArray * CloneOptObject
TClonesArray * CloneSensor2DMeas
TClonesArray * CloneTiltmeterMeas
TTree * CocoaTree
CopsMeasCopsMeasA
Distancemeter1DimMeasDistancemeter1DimMeasA
DistancemeterMeasDistancemeterMeasA
FitParamFitParamA
int NCops
int NDegreesOfFreedom
int NDistancemeter
int NDistancemeter1Dim
int NFitParameters
int NOptObjects
int NSensor2D
int NTiltmeter
OptObjectOptObjectA
Sensor2DMeasSensor2DMeasA
TFile * theRootFile
TiltmeterMeasTiltmeterMeasA

Static Private Attributes

static NtupleManagerinstance = 0


Detailed Description

Definition at line 20 of file NtupleManager.h.


Constructor & Destructor Documentation

NtupleManager::NtupleManager (  )  [inline]

Definition at line 25 of file NtupleManager.h.

00025 { };

NtupleManager::~NtupleManager (  )  [inline]

Definition at line 26 of file NtupleManager.h.

00026 { };


Member Function Documentation

void NtupleManager::BookNtuple (  ) 

Definition at line 42 of file NtupleManager.cc.

References Chi2CalibratedParameters, Chi2Measurements, CloneCopsMeas, CloneDistancemeter1DimMeas, CloneDistancemeterMeas, CloneFitParam, CloneOptObject, CloneSensor2DMeas, CloneTiltmeterMeas, CocoaTree, NCops, NDegreesOfFreedom, NDistancemeter, NDistancemeter1Dim, NFitParameters, NOptObjects, NSensor2D, NTiltmeter, and theRootFile.

Referenced by Fit::startFit().

00043 {
00044   theRootFile = new TFile("report.root","RECREATE","Simple ROOT Ntuple");
00045 
00046   CocoaTree = new TTree("CocoaTree","CocoaTree"); 
00047 
00048   CocoaTree->Branch("Chi2Measurements",&Chi2Measurements,"Chi2Measurements/D");
00049   CocoaTree->Branch("Chi2CalibratedParameters",&Chi2CalibratedParameters,"Chi2CalibratedParameters/D");
00050   CocoaTree->Branch("NDegreesOfFreedom",&NDegreesOfFreedom,"NDegreesOfFreedom/I");
00051 
00052   CloneFitParam = new TClonesArray("FitParam");
00053   CocoaTree->Branch("FitParameters",&CloneFitParam,32000,2);
00054   CocoaTree->Branch("NFitParameters",&NFitParameters,"NFitParameters/I");
00055 
00056   CloneOptObject = new TClonesArray("OptObject");
00057   CocoaTree->Branch("OptObjects",&CloneOptObject,32000,2);
00058   CocoaTree->Branch("NOptObjects",&NOptObjects,"NOptObjects/I");
00059 
00060   CloneSensor2DMeas = new TClonesArray("Sensor2DMeas");
00061   CocoaTree->Branch("Sensor2DMeasurements",&CloneSensor2DMeas,32000,2);
00062   CocoaTree->Branch("NSensor2D",&NSensor2D,"NSensor2D/I");
00063   
00064   CloneDistancemeterMeas = new TClonesArray("DistancemeterMeas");
00065   CocoaTree->Branch("DistancemeterMeasurements",&CloneDistancemeterMeas,32000,2);
00066   CocoaTree->Branch("NDistancemeter",&NDistancemeter,"NDistancemeter/I");
00067   
00068   CloneDistancemeter1DimMeas = new TClonesArray("Distancemeter1DimMeas");
00069   CocoaTree->Branch("Distancemeter1DimMeasurements",&CloneDistancemeter1DimMeas,32000,2);
00070   CocoaTree->Branch("NDistancemeter1Dim",&NDistancemeter1Dim,"NDistancemeter1Dim/I");
00071 
00072   CloneTiltmeterMeas = new TClonesArray("TiltmeterMeas");
00073   CocoaTree->Branch("TiltmeterMeasurements",&CloneTiltmeterMeas,32000,2);
00074   CocoaTree->Branch("NTiltmeter",&NTiltmeter,"NTiltmeter/I");
00075 
00076   CloneCopsMeas = new TClonesArray("CopsMeas");
00077   CocoaTree->Branch("CopsMeasurements",&CloneCopsMeas,32000,2);
00078   CocoaTree->Branch("NCops",&NCops,"NCops/I");
00079 
00080   theRootFile->Add(CocoaTree);
00081 
00082 //   FitParametersTree = new TTree("FitParametersTree","FitParametersTree");
00083 //   FitParametersTree->Branch("NFitParameters",&NFitParameters,"NFitParameters/I");
00084 //   BookFitParameters = false;
00085 //   theRootFile->Add(FitParametersTree);
00086 
00087 //   MeasurementsTree = new TTree("MeasurementsTree","MeasurementsTree");
00088 //   MeasurementsTree->Branch("NMeasurements",&NMeasurements,"NMeasurements/I");
00089 //   BookMeasurements = false;
00090 //   theRootFile->Add(MeasurementsTree);
00091  
00092 
00093 }

void NtupleManager::FillChi2 (  ) 

Definition at line 130 of file NtupleManager.cc.

References begin, c2, Chi2CalibratedParameters, Chi2Measurements, Model::EntryList(), Model::MeasurementList(), and NDegreesOfFreedom.

Referenced by Fit::fitNextEvent().

00131 {
00132   double chi2meas = 0; 
00133   double chi2cal = 0;
00134   ALIint nMeas = 0, nUnk = 0;
00135 
00136   //----- Calculate the chi2 of measurements
00137   std::vector< Measurement* >::const_iterator vmcite;
00138   for ( vmcite = Model::MeasurementList().begin(); vmcite != Model::MeasurementList().end(); vmcite++) {
00139     for ( ALIuint ii = 0; ii < ALIuint((*vmcite)->dim()); ii++ ){
00140       nMeas++;
00141       double c2 = ( (*vmcite)->value(ii) - (*vmcite)->valueSimulated(ii) ) / (*vmcite)->sigma(ii);
00142       chi2meas += c2*c2;
00143     }
00144   }
00145 
00146   //----- Calculate the chi2 of calibrated parameters
00147   std::vector< Entry* >::iterator veite;
00148   for ( veite = Model::EntryList().begin();
00149         veite != Model::EntryList().end(); veite++ ) {
00150     if ( (*veite)->quality() == 2 ) nUnk++;
00151     if ( (*veite)->quality() == 1 ) {
00152 //       std::cout << " " << (*veite)->valueDisplacementByFitting() << " " 
00153 //              << (*veite)->value << " " << (*veite)->sigma() << std::endl;
00154       double c2 = (*veite)->valueDisplacementByFitting() / (*veite)->sigma();
00155       chi2cal += c2*c2;
00156     }
00157   }
00158 
00159   Chi2Measurements = chi2meas;
00160   Chi2CalibratedParameters = chi2cal;
00161   NDegreesOfFreedom = nMeas - nUnk;
00162 
00163 }

void NtupleManager::FillFitParameters ( MatrixMeschach AtWAMatrix  ) 

Definition at line 167 of file NtupleManager.cc.

References begin, CloneOptObject, GenMuonPlsPt100GeV_cfg::cout, lat::endl(), Model::EntryList(), FitParamA, FitParam::FittedSigma, FitParam::FittedValue, FittedEntry::getEntryName(), FittedEntry::getName(), FittedEntry::getOptOName(), FittedEntry::getOrder(), FittedEntry::getOrigSigma(), FittedEntry::getOrigValue(), FittedEntry::getQuality(), FittedEntry::getSigma(), FittedEntry::getValue(), if(), FitParam::InitialSigma, FitParam::InitialValue, MatrixMeschach::Mat(), OptObject::Name, FitParam::Name, NFitParameters, NOptObjects, FitParam::OptObjectIndex, FitParam::Quality, and funct::sqrt().

Referenced by Fit::fitNextEvent().

00168 {
00169 
00170 //   double ParValue[1000], ParError[1000];
00171   int theMinEntryQuality = 1; 
00172   int ii = 0;
00173   std::vector<Entry*>::const_iterator vecite; 
00174   for ( vecite = Model::EntryList().begin();
00175     vecite != Model::EntryList().end(); vecite++ ) {
00176 
00177     //--- Only for good quality parameters (='unk')
00178     if ( (*vecite)->quality() >= theMinEntryQuality ) {
00179 
00180       ALIint ipos = (*vecite)->fitPos();
00181       FittedEntry* fe = new FittedEntry( (*vecite), ipos, sqrt(AtWAMatrix->Mat()->me[ipos][ipos]));
00182 //       if (!BookFitParameters) {
00183 //      CocoaTree->Branch("NFitParameters",&NFitParameters,"NFitParameters/I:");
00184 //      ALIstring partype = fe->getName() + "/D";
00185 //      FitParametersTree->Branch(fe->getName().c_str(), &ParValue[ii], partype.c_str());
00186 //      ALIstring parerrname = fe->getName() + "_err";
00187 //      ALIstring parerrtype = parerrname + "/D";
00188 //      FitParametersTree->Branch(parerrname.c_str(), &ParError[ii], parerrtype.c_str());
00189 //       }
00190 //       ParValue[ii] = fe->getValue();
00191 //       ParError[ii] = fe->getSigma();
00192      std::cout << "EEE " << (*vecite)->ValueDimensionFactor() << " " << (*vecite)->SigmaDimensionFactor() << " " << fe->getOptOName() << " " << fe->getEntryName() << " " << fe->getName() << " " << fe->getOrder() << " " << fe->getQuality() << " " << (*vecite)->type() << " " << std::endl;
00193       FitParamA = new( (*CloneFitParam)[ii] ) FitParam();
00194       FitParamA->Name = fe->getName();
00195       if (fe->getQuality()==1) FitParamA->Quality = "Calibrated";
00196       else if (fe->getQuality()==2) FitParamA->Quality = "Unknown";
00197       for (int no = 0; no<NOptObjects; no++) {
00198         OptObject* optobj = (OptObject*) CloneOptObject->At(no);
00199         if (optobj->Name==fe->getOptOName()) FitParamA->OptObjectIndex = no;
00200       }
00201       float DF = 1.;
00202       if ((*vecite)->type()=="centre" || (*vecite)->type()=="length") DF = 1000.;
00203       FitParamA->InitialValue = DF*fe->getOrigValue()*(*vecite)->ValueDimensionFactor();
00204       FitParamA->InitialSigma = DF*fe->getOrigSigma()*(*vecite)->SigmaDimensionFactor();
00205       FitParamA->FittedValue  = DF*fe->getValue()*(*vecite)->ValueDimensionFactor();
00206       FitParamA->FittedSigma  = DF*fe->getSigma()*(*vecite)->SigmaDimensionFactor();
00207       ii++;
00208 
00209     }
00210 
00211   }
00212 //   BookFitParameters = true;
00213   NFitParameters = ii;
00214 //   FitParametersTree->Fill();
00215 
00216   /*  
00217   //---------- Loop sets of entries
00218   std::vector< FittedEntriesSet* > theFittedEntriesSets;
00219   std::vector< FittedEntriesSet* >::const_iterator vfescite;
00220   std::vector< FittedEntry* >::const_iterator vfecite;
00221   ALIint jj = 1;
00222   for( vfescite = theFittedEntriesSets.begin(); vfescite != theFittedEntriesSets.end(); vfescite++) {
00223     //---------- Loop entries
00224     if( vfescite == theFittedEntriesSets.begin() ) {
00225     //----- dump entries names if first set 
00226       ALIint ii = 0;
00227       for( vfecite = ((*vfescite)->FittedEntries()).begin(); vfecite != ((*vfescite)->FittedEntries()).end(); vfecite++) {
00228         ALIstring partype = (*vfecite)->getName() + "/D";
00229         FitParametersTree->Branch((*vfecite)->getName().c_str(), &ParValue[ii], partype.c_str());
00230         ALIstring parerrname = (*vfecite)->getName() + "_err";
00231         ALIstring parerrtype = parerrname + "/D";
00232         FitParametersTree->Branch(parerrname.c_str(), &ParError[ii], parerrtype.c_str());
00233         ii++;
00234       }
00235     }
00236     ALIint ii = 0;
00237     for( vfecite = ((*vfescite)->FittedEntries()).begin(); vfecite != ((*vfescite)->FittedEntries()).end(); vfecite++) {
00238       ParValue[ii] = (*vfecite)->getValue();
00239       ParError[ii] = (*vfecite)->getSigma();
00240       ii++;
00241     }
00242     NFitParameters = ii;
00243     FitParametersTree->Fill();
00244     jj++;
00245   }
00246   */
00247 
00248 }

void NtupleManager::FillMeasurements (  ) 

Definition at line 308 of file NtupleManager.cc.

References TiltmeterMeas::AngError, TiltmeterMeas::Angle, begin, CloneOptObject, CopsMeasA, d1, dd, DistancemeterMeas::DisError, Distancemeter1DimMeas::DisError, DistancemeterMeas::Distance, Distancemeter1DimMeas::Distance, Distancemeter1DimMeasA, DistancemeterMeasA, i, prof2calltree::last, Model::MeasurementList(), OptObject::Name, Sensor2DMeas::Name, Distancemeter1DimMeas::Name, TiltmeterMeas::Name, CopsMeas::Name, DistancemeterMeas::Name, NCops, NDistancemeter, NDistancemeter1Dim, NOptObjects, NSensor2D, NTiltmeter, Distancemeter1DimMeas::OptObjectIndex, TiltmeterMeas::OptObjectIndex, CopsMeas::OptObjectIndex, Sensor2DMeas::OptObjectIndex, DistancemeterMeas::OptObjectIndex, CopsMeas::PosError, Sensor2DMeas::PosError, Sensor2DMeas::Position, CopsMeas::Position, Sensor2DMeasA, TiltmeterMeas::SimulatedAngle, Distancemeter1DimMeas::SimulatedDistance, DistancemeterMeas::SimulatedDistance, CopsMeas::SimulatedPosition, Sensor2DMeas::SimulatedPosition, ss, TiltmeterMeasA, and tt.

Referenced by Fit::fitNextEvent().

00309 {
00310   //---------- Loop Measurements
00311   int ss = 0, dd = 0, d1 = 0, tt = 0, cc = 0;
00312   std::vector< Measurement* >::const_iterator vmcite;
00313   for ( vmcite = Model::MeasurementList().begin(); vmcite != Model::MeasurementList().end(); vmcite++) {
00314     std::vector<ALIstring> optonamelist = (*vmcite)->OptONameList(); 
00315     int last = optonamelist.size() - 1; ALIstring LastOptOName = optonamelist[last];
00316     int optoind = -999;
00317     for (int no = 0; no<NOptObjects; no++) {
00318       OptObject* optobj = (OptObject*) CloneOptObject->At(no);
00319       if (optobj->Name==LastOptOName) optoind = no;
00320     }
00321     //std::cout << "DimSens " << (*vmcite)->type() << " " << (*vmcite)->sigma(0) << " " << LastOptOName << " " << optoind << std::endl;
00322     if ((*vmcite)->type()=="SENSOR2D") {
00323       Sensor2DMeasA = new( (*CloneSensor2DMeas)[ss] ) Sensor2DMeas();
00324       Sensor2DMeasA->Name = (*vmcite)->name();
00325       Sensor2DMeasA->OptObjectIndex = optoind;
00326       for (uint i = 0; i<(*vmcite)->dim(); i++) {
00327         Sensor2DMeasA->Position[i] = 1000.*(*vmcite)->value()[i];
00328         Sensor2DMeasA->PosError[i] = 1000.*(*vmcite)->sigma()[i];
00329         Sensor2DMeasA->SimulatedPosition[i] = 1000.*(*vmcite)->valueSimulated(i);
00330       }
00331       ss++;
00332     }
00333     if ((*vmcite)->type()=="DISTANCEMETER") {
00334       DistancemeterMeasA = new( (*CloneDistancemeterMeas)[dd] ) DistancemeterMeas();
00335       DistancemeterMeasA->Name = (*vmcite)->name();
00336       DistancemeterMeasA->OptObjectIndex = optoind;
00337       DistancemeterMeasA->Distance = 1000.*(*vmcite)->value()[0];
00338       DistancemeterMeasA->DisError = 1000.*(*vmcite)->sigma()[0];
00339       DistancemeterMeasA->SimulatedDistance = 1000.*(*vmcite)->valueSimulated(0);
00340       dd++;
00341     }
00342     if ((*vmcite)->type()=="DISTANCEMETER1DIM") {
00343       Distancemeter1DimMeasA = new( (*CloneDistancemeter1DimMeas)[d1] ) Distancemeter1DimMeas();
00344       Distancemeter1DimMeasA->Name = (*vmcite)->name();
00345       Distancemeter1DimMeasA->OptObjectIndex = optoind;
00346       Distancemeter1DimMeasA->Distance = 1000.*(*vmcite)->value()[0];
00347       Distancemeter1DimMeasA->DisError = 1000.*(*vmcite)->sigma()[0];
00348       Distancemeter1DimMeasA->SimulatedDistance = 1000.*(*vmcite)->valueSimulated(0);
00349       d1++;
00350 
00351     }
00352     if ((*vmcite)->type()=="TILTMETER") {
00353       TiltmeterMeasA = new( (*CloneTiltmeterMeas)[tt] ) TiltmeterMeas();
00354       TiltmeterMeasA->Name = (*vmcite)->name();
00355       TiltmeterMeasA->OptObjectIndex = optoind;
00356       TiltmeterMeasA->Angle    = (*vmcite)->value()[0];
00357       TiltmeterMeasA->AngError = (*vmcite)->sigma()[0];
00358       TiltmeterMeasA->SimulatedAngle = (*vmcite)->valueSimulated(0);
00359       tt++;
00360     }
00361     if ((*vmcite)->type()=="COPS") {
00362       CopsMeasA = new( (*CloneCopsMeas)[cc] ) CopsMeas();
00363       CopsMeasA->Name = (*vmcite)->name();
00364       CopsMeasA->OptObjectIndex = optoind;
00365       for (uint i = 0; i<(*vmcite)->dim(); i++) {
00366         CopsMeasA->Position[i] = 1000.*(*vmcite)->value()[i];
00367         CopsMeasA->PosError[i] = 1000.*(*vmcite)->sigma()[i];
00368         CopsMeasA->SimulatedPosition[i] = 1000.*(*vmcite)->valueSimulated(i);
00369       }
00370       cc++;
00371     }
00372   }
00373   NSensor2D = ss; 
00374   NDistancemeter = dd; 
00375   NDistancemeter1Dim = d1; 
00376   NTiltmeter = tt; 
00377   NCops = cc; 
00378   //   MeasurementsTree->Fill();
00379 }

void NtupleManager::FillNtupleTree (  ) 

Definition at line 115 of file NtupleManager.cc.

References CocoaTree.

Referenced by Fit::fitNextEvent().

00116 {
00117   CocoaTree->Fill();
00118 }

void NtupleManager::FillOptObjects ( MatrixMeschach AtWAMatrix  ) 

Definition at line 252 of file NtupleManager.cc.

References OptObject::AnglesGlobal, OptObject::AnglesLocal, begin, OptObject::CentreGlobal, OptObject::CentreLocal, GetGlobalAngles(), i, OptObject::Name, NOptObjects, OptObjectA, Model::OptOList(), OptObject::Parent, theta, OptObject::Type, XCoor, YCoor, and ZCoor.

Referenced by Fit::fitNextEvent().

00253 {
00254 
00255   int ii = 0;
00256   std::vector< OpticalObject* >::const_iterator vecobj;
00257   for ( vecobj = Model::OptOList().begin();
00258         vecobj != Model::OptOList().end(); vecobj++ ) {
00259     OptObjectA = new( (*CloneOptObject)[ii] ) OptObject();
00260 
00261     OptObjectA->Name =  (*vecobj)->name();
00262     OptObjectA->Type = (*vecobj)->type();
00263 
00264     if (!(*vecobj)->parent()) {
00265       OptObjectA->Parent = ii;
00266       ii++;
00267       continue;
00268     }
00269 
00270     int pp = 0;
00271     std::vector< OpticalObject* >::const_iterator vecobj2;
00272     for ( vecobj2 = Model::OptOList().begin();
00273           vecobj2 != Model::OptOList().end(); vecobj2++ ) {
00274       if ((*vecobj2)->name()==(*vecobj)->parent()->name()) {
00275         OptObjectA->Parent = pp;
00276         continue;
00277       }
00278       pp++;
00279     }
00280     
00281     OptObjectA->CentreGlobal[0] = 1000.*(*vecobj)->centreGlobal().x();
00282     OptObjectA->CentreGlobal[1] = 1000.*(*vecobj)->centreGlobal().y();
00283     OptObjectA->CentreGlobal[2] = 1000.*(*vecobj)->centreGlobal().z();
00284 
00285     OptObjectA->CentreLocal[0] = 1000.*(*vecobj)->centreLocal().x();
00286     OptObjectA->CentreLocal[1] = 1000.*(*vecobj)->centreLocal().y();
00287     OptObjectA->CentreLocal[2] = 1000.*(*vecobj)->centreLocal().z();
00288 
00289     OptObjectA->AnglesLocal[0] = (*vecobj)->getEntryRMangle(XCoor);
00290     OptObjectA->AnglesLocal[1] = (*vecobj)->getEntryRMangle(YCoor);
00291     OptObjectA->AnglesLocal[2] = (*vecobj)->getEntryRMangle(ZCoor);
00292 
00293     double theta[3];
00294     GetGlobalAngles((*vecobj)->rmGlob(), theta);
00295     for (int i = 0; i<3; i++) OptObjectA->AnglesGlobal[i] = theta[i];
00296 
00297     ii++;
00298 
00299   }
00300 
00301   NOptObjects = ii;
00302 
00303 
00304 }

void NtupleManager::GetGlobalAngles ( const HepRotation &  rmGlob,
double *  theta 
) [private]

Definition at line 383 of file NtupleManager.cc.

References DeDxTools::beta(), funct::cos(), GenMuonPlsPt100GeV_cfg::cout, e, lat::endl(), Pi, and funct::sin().

Referenced by FillOptObjects().

00384 {
00385 
00386   double xx = rmGlob.xx(); if (fabs(xx)<1.e-08) xx = 0.;
00387   double xy = rmGlob.xy(); if (fabs(xy)<1.e-08) xy = 0.;
00388   double xz = rmGlob.xz(); if (fabs(xz)<1.e-08) xz = 0.;
00389   double yx = rmGlob.yx(); if (fabs(yx)<1.e-08) yx = 0.;
00390   double yy = rmGlob.yy(); if (fabs(yy)<1.e-08) yy = 0.;
00391   double yz = rmGlob.yz(); if (fabs(yz)<1.e-08) yz = 0.;
00392   double zx = rmGlob.zx(); if (fabs(zx)<1.e-08) zx = 0.;
00393   double zy = rmGlob.zy(); if (fabs(zy)<1.e-08) zy = 0.;
00394   double zz = rmGlob.zz(); if (fabs(zz)<1.e-08) zz = 0.;
00395 
00396   double beta = asin(-zx);
00397 
00398   double alpha, gamma;
00399   if (fabs(zx)!=1.) {
00400   
00401     double sinalpha = zy/cos(beta);
00402     double cosalpha = zz/cos(beta);
00403     if (cosalpha>=0) alpha = asin(sinalpha);
00404     else alpha = TMath::Pi() - asin(sinalpha);
00405     if (alpha>TMath::Pi()) alpha -= 2*TMath::Pi();
00406   
00407     double singamma = yx/cos(beta);
00408     double cosgamma = xx/cos(beta);
00409     if (cosgamma>=0) gamma = asin(singamma);
00410     else gamma = TMath::Pi() - asin(singamma);
00411     if (gamma>TMath::Pi()) gamma -= 2*TMath::Pi();
00412     
00413   } else {
00414 
00415     alpha = 0.;
00416     
00417     double singamma = yz/sin(beta);
00418     double cosgamma = yy;
00419     if (cosgamma>=0) gamma = asin(singamma);
00420     else gamma = TMath::Pi() - asin(singamma);
00421     if (gamma>TMath::Pi()) gamma -= 2*TMath::Pi();
00422 
00423   }
00424 
00425   int GotGlobalAngles = 0;
00426   if (fabs(xy-(sin(alpha)*sin(beta)*cos(gamma)-sin(gamma)*cos(alpha)))>1.e-08)
00427     GotGlobalAngles += 1;
00428   if (fabs(xz-(cos(alpha)*sin(beta)*cos(gamma)+sin(gamma)*sin(alpha)))>1.e-08) 
00429     GotGlobalAngles += 10;
00430   if (fabs(yy-(sin(alpha)*sin(beta)*sin(gamma)+cos(gamma)*cos(alpha)))>1.e-08)
00431     GotGlobalAngles += 100;
00432   if (fabs(yz-(cos(alpha)*sin(beta)*sin(gamma)-cos(gamma)*sin(alpha)))>1.e-08) 
00433     GotGlobalAngles += 1000;
00434   if (GotGlobalAngles>0) 
00435     std::cout << "NtupleManager Warning: cannot get global rotation: " 
00436               << GotGlobalAngles << std::endl;
00437 
00438   theta[0] = alpha;
00439   theta[1] = beta;
00440   theta[2] = gamma;
00441 
00442 }

NtupleManager * NtupleManager::getInstance (  )  [static]

Definition at line 30 of file NtupleManager.cc.

References instance.

Referenced by Fit::fitNextEvent(), and Fit::startFit().

00031 {
00032   if(!instance) {
00033     instance = new NtupleManager;
00034   }
00035   return instance;
00036 }

void NtupleManager::InitNtuple (  ) 

Definition at line 97 of file NtupleManager.cc.

References Chi2CalibratedParameters, Chi2Measurements, CloneFitParam, NCops, NDegreesOfFreedom, NDistancemeter, NDistancemeter1Dim, NFitParameters, NOptObjects, NSensor2D, and NTiltmeter.

Referenced by Fit::fitNextEvent().

00098 {
00099   CloneFitParam->Clear();
00100 
00101   Chi2Measurements = 0.;
00102   Chi2CalibratedParameters = 0.;
00103   NDegreesOfFreedom = 0;
00104   NFitParameters = 0; 
00105   NOptObjects = 0; 
00106   NSensor2D = 0; 
00107   NDistancemeter = 0; 
00108   NDistancemeter1Dim = 0; 
00109   NTiltmeter = 0;
00110   NCops = 0;
00111 }

void NtupleManager::WriteNtuple (  ) 

Definition at line 122 of file NtupleManager.cc.

References theRootFile.

Referenced by Fit::startFit().

00123 {
00124   theRootFile->Write();
00125   theRootFile->Close();
00126 }


Member Data Documentation

double NtupleManager::Chi2CalibratedParameters [private]

Definition at line 60 of file NtupleManager.h.

Referenced by BookNtuple(), FillChi2(), and InitNtuple().

double NtupleManager::Chi2Measurements [private]

Definition at line 60 of file NtupleManager.h.

Referenced by BookNtuple(), FillChi2(), and InitNtuple().

TClonesArray* NtupleManager::CloneCopsMeas [private]

Definition at line 55 of file NtupleManager.h.

Referenced by BookNtuple().

TClonesArray* NtupleManager::CloneDistancemeter1DimMeas [private]

Definition at line 53 of file NtupleManager.h.

Referenced by BookNtuple().

TClonesArray* NtupleManager::CloneDistancemeterMeas [private]

Definition at line 52 of file NtupleManager.h.

Referenced by BookNtuple().

TClonesArray* NtupleManager::CloneFitParam [private]

Definition at line 49 of file NtupleManager.h.

Referenced by BookNtuple(), and InitNtuple().

TClonesArray* NtupleManager::CloneOptObject [private]

Definition at line 50 of file NtupleManager.h.

Referenced by BookNtuple(), FillFitParameters(), and FillMeasurements().

TClonesArray* NtupleManager::CloneSensor2DMeas [private]

Definition at line 51 of file NtupleManager.h.

Referenced by BookNtuple().

TClonesArray* NtupleManager::CloneTiltmeterMeas [private]

Definition at line 54 of file NtupleManager.h.

Referenced by BookNtuple().

TTree* NtupleManager::CocoaTree [private]

Definition at line 45 of file NtupleManager.h.

Referenced by BookNtuple(), and FillNtupleTree().

CopsMeas* NtupleManager::CopsMeasA [private]

Definition at line 55 of file NtupleManager.h.

Referenced by FillMeasurements().

Distancemeter1DimMeas* NtupleManager::Distancemeter1DimMeasA [private]

Definition at line 53 of file NtupleManager.h.

Referenced by FillMeasurements().

DistancemeterMeas* NtupleManager::DistancemeterMeasA [private]

Definition at line 52 of file NtupleManager.h.

Referenced by FillMeasurements().

FitParam* NtupleManager::FitParamA [private]

Definition at line 49 of file NtupleManager.h.

Referenced by FillFitParameters().

NtupleManager * NtupleManager::instance = 0 [static, private]

Definition at line 39 of file NtupleManager.h.

Referenced by getInstance().

int NtupleManager::NCops [private]

Definition at line 68 of file NtupleManager.h.

Referenced by BookNtuple(), FillMeasurements(), and InitNtuple().

int NtupleManager::NDegreesOfFreedom [private]

Definition at line 61 of file NtupleManager.h.

Referenced by BookNtuple(), FillChi2(), and InitNtuple().

int NtupleManager::NDistancemeter [private]

Definition at line 65 of file NtupleManager.h.

Referenced by BookNtuple(), FillMeasurements(), and InitNtuple().

int NtupleManager::NDistancemeter1Dim [private]

Definition at line 66 of file NtupleManager.h.

Referenced by BookNtuple(), FillMeasurements(), and InitNtuple().

int NtupleManager::NFitParameters [private]

Definition at line 62 of file NtupleManager.h.

Referenced by BookNtuple(), FillFitParameters(), and InitNtuple().

int NtupleManager::NOptObjects [private]

Definition at line 63 of file NtupleManager.h.

Referenced by BookNtuple(), FillFitParameters(), FillMeasurements(), FillOptObjects(), and InitNtuple().

int NtupleManager::NSensor2D [private]

Definition at line 64 of file NtupleManager.h.

Referenced by BookNtuple(), FillMeasurements(), and InitNtuple().

int NtupleManager::NTiltmeter [private]

Definition at line 67 of file NtupleManager.h.

Referenced by BookNtuple(), FillMeasurements(), and InitNtuple().

OptObject* NtupleManager::OptObjectA [private]

Definition at line 50 of file NtupleManager.h.

Referenced by FillOptObjects().

Sensor2DMeas* NtupleManager::Sensor2DMeasA [private]

Definition at line 51 of file NtupleManager.h.

Referenced by FillMeasurements().

TFile* NtupleManager::theRootFile [private]

Definition at line 43 of file NtupleManager.h.

Referenced by BookNtuple(), and WriteNtuple().

TiltmeterMeas* NtupleManager::TiltmeterMeasA [private]

Definition at line 54 of file NtupleManager.h.

Referenced by FillMeasurements().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:29:03 2009 for CMSSW by  doxygen 1.5.4