CMS 3D CMS Logo

Public Member Functions | Private Attributes

TEcnaRun Class Reference

#include <TEcnaRun.h>

List of all members.

Public Member Functions

void AverageHighFrequencyNoise ()
void AverageLowFrequencyNoise ()
void AverageMeanCorrelationsBetweenSamples ()
void AveragePedestals ()
void AverageSigmaOfCorrelationsBetweenSamples ()
void AverageTotalNoise ()
Bool_t CloseRootFile (const Text_t *)
void CorrelationsBetweenSamples ()
void CovariancesBetweenSamples ()
void Expert1Calculations ()
void Expert2Calculations ()
TString GetNewRootFileName ()
TString GetNewRootFileNameShort ()
Bool_t GetPathForResults ()
void GetReadyToCompute ()
void GetReadyToReadData (TString, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const Int_t &)
void GetReadyToReadData (TString, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const Int_t &)
TString GetRootFileName ()
TString GetRootFileNameShort ()
Bool_t GetSampleAdcValues (const Int_t &, const Int_t &, const Int_t &, const Int_t &, const Double_t &)
void HighFrequencyCorrelationsBetweenChannels ()
void HighFrequencyCovariancesBetweenChannels ()
void HighFrequencyMeanCorrelationsBetweenSCs ()
void HighFrequencyMeanCorrelationsBetweenStins ()
void HighFrequencyMeanCorrelationsBetweenTowers ()
void HighFrequencyNoise ()
void Init ()
void LowFrequencyCorrelationsBetweenChannels ()
void LowFrequencyCovariancesBetweenChannels ()
void LowFrequencyMeanCorrelationsBetweenSCs ()
void LowFrequencyMeanCorrelationsBetweenStins ()
void LowFrequencyMeanCorrelationsBetweenTowers ()
void LowFrequencyNoise ()
void MeanCorrelationsBetweenSamples ()
Bool_t OpenRootFile (const Text_t *, TString)
void Pedestals ()
void PrintAllComments ()
void PrintComments ()
void PrintNoComment ()
void PrintWarnings ()
Bool_t ReadSampleAdcValues ()
Bool_t ReadSampleAdcValues (const Int_t &)
void SampleMeans ()
void SampleSigmas ()
void SampleValues ()
void SetEcalSubDetector (const TString)
void SigmaOfCorrelationsBetweenSamples ()
void StandardCalculations ()
void StartStopDate (TString, TString)
void StartStopTime (time_t, time_t)
 TEcnaRun (const TEcnaRun &)
 TEcnaRun (TEcnaObject *, const TString)
 TEcnaRun (TEcnaObject *, const TString, const Int_t &)
 TEcnaRun ()
void TotalNoise ()
void TRootAdcEvt (const Int_t &, const Int_t &)
void TRootAvEvCorss ()
void TRootAvHfn ()
void TRootAvLfn ()
void TRootAvPed ()
void TRootAvSigCorss ()
void TRootAvTno ()
void TRootCorCss (const Int_t &, const Int_t &)
void TRootCovCss (const Int_t &, const Int_t &)
void TRootHFccMoStins ()
void TRootHfCor ()
void TRootHfCov ()
void TRootHfn ()
void TRootLFccMoStins ()
void TRootLfCor ()
void TRootLfCov ()
void TRootLfn ()
void TRootMeanCorss ()
void TRootMSp (const Int_t &)
void TRootNbOfEvts (const Int_t &)
void TRootPed ()
void TRootSigCorss ()
void TRootSSp (const Int_t &)
void TRootStinNumbers ()
void TRootTno ()
Bool_t WriteNewRootFile (const TString)
Bool_t WriteRootFile (const Text_t *, Int_t &)
Bool_t WriteRootFile ()
virtual ~TEcnaRun ()

Private Attributes

Int_t fBuildEvtNotSkipped
Int_t fCdelete
Int_t fCnaCommand
Int_t fCnaError
TEcnaParCoutfCnaParCout
TEcnaParPathsfCnaParPaths
TEcnaWritefCnaWrite
Int_t fCnew
Int_t fCodePrintAllComments
Int_t fCodePrintComments
Int_t fCodePrintNoComment
Int_t fCodePrintWarnings
TEcnaParEcalfEcal
TEcnaNumberingfEcalNumbering
ofstream fFcout_f
TEcnaHeaderfFileHeader
Int_t fFlagPrint
TString fFlagSubDet
Int_t fgMaxCar
Int_t fMaxMsgIndexForMiscDiag
Int_t fMemoReadNumberOfEventsforSamples
Int_t * fMiscDiag
Int_t fNbOfMiscDiagCounters
Int_t fNbSampForCalc
Int_t fNbSampForFic
TString fNewRootFileName
TString fNewRootFileNameShort
Int_t fNumberOfEvents
TEcnaObjectfObjectManager
Bool_t fOpenRootFile
Int_t fReadyToReadData
TString fRootFileName
TString fRootFileNameShort
Int_t fSpecialStexStinNotIndexed
TString fStexName
Int_t fStinIndexBuilt
TString fStinName
Double_t * fT1d_av_ev_corss
Double_t * fT1d_av_hifn
Double_t * fT1d_av_lofn
Double_t * fT1d_av_mped
Double_t * fT1d_av_sig_corss
Double_t * fT1d_av_totn
Double_t * fT1d_ev
Double_t * fT1d_ev_cor_ss
Double_t * fT1d_ev_ev
Double_t * fT1d_evevt_of_sigsamp
Double_t * fT1d_evsamp_of_sigevt
Int_t * fT1d_NbOfEvts
Double_t * fT1d_sig
Double_t * fT1d_sig_cor_ss
Double_t * fT1d_sigevt_of_evsamp
Int_t * fT1d_StexStinFromIndex
Int_t * fT1dCrysNumbersTable
Double_t * fT2d1_hf_cor
Double_t * fT2d1_hf_cov
Double_t * fT2d1_hfcc_mostins
Double_t * fT2d1_lf_cor
Double_t * fT2d1_lf_cov
Double_t * fT2d1_lfcc_mostins
Double_t ** fT2d_ev
Double_t ** fT2d_hf_cor
Double_t ** fT2d_hf_cov
Double_t ** fT2d_hfcc_mostins
Double_t ** fT2d_lf_cor
Double_t ** fT2d_lf_cov
Double_t ** fT2d_lfcc_mostins
Int_t ** fT2d_NbOfEvts
Double_t ** fT2d_sig
Int_t ** fT2dCrysNumbersTable
Double_t * fT3d1_AdcValues
Double_t * fT3d1_cor_ss
Double_t * fT3d1_cov_ss
Double_t ** fT3d2_AdcValues
Double_t ** fT3d2_cor_ss
Double_t ** fT3d2_cov_ss
Double_t *** fT3d_AdcValues
Double_t *** fT3d_cor_ss
Double_t *** fT3d_cov_ss
Int_t * fTagAdcEvt
Int_t * fTagAvHfn
Int_t * fTagAvLfn
Int_t * fTagAvMeanCorss
Int_t * fTagAvPed
Int_t * fTagAvSigCorss
Int_t * fTagAvTno
Int_t * fTagCorCss
Int_t * fTagCovCss
Int_t * fTagHFccMoStins
Int_t * fTagHfCor
Int_t * fTagHfCov
Int_t * fTagHfn
Int_t * fTagLFccMoStins
Int_t * fTagLfCor
Int_t * fTagLfCov
Int_t * fTagLfn
Int_t * fTagMeanCorss
Int_t * fTagMSp
Int_t * fTagNbOfEvts
Int_t * fTagPed
Int_t * fTagSigCorss
Int_t * fTagSSp
Int_t * fTagStinNumbers
Int_t * fTagTno
TString fTTBELL

Detailed Description

----------------------------------------------------------- TEcnaRun.h Update: 16/02/2011 Authors: B.Fabbro (bernard.fabbro@cea.fr), FX Gentit DSM/IRFU/SPP CEA-Saclay Copyright: Those valid for CEA sofware

ECNA web page: https://cms-fabbro.web.cern.ch/cms-fabbro/ cna_new/Correlated_Noise_Analysis/ECNA_cna_1.htm -----------------------------------------------------------

TEcnaRun + ECNA (Ecal Correlated Noise Analysis) instructions for use in the framework of CMSSW.

==============> INTRODUCTION

The present documentation contains:

[1] a brief description of the ECNA package with instructions for use in the framework of the CMS Software

[2] the documentation for the class TEcnaRun

==[1]=====================================================================================

DOCUMENTATION FOR THE INTERFACE: ECNA package / CMSSW / SCRAM

==========================================================================================

ECNA consists in 2 packages named: EcalCorrelatedNoiseAnalysisModules and EcalCorrelatedNoiseAnalysisAlgos.

The directory tree is the following:

<local path>="">/CMSSW_a_b_c/src/----CalibCalorimetry/---EcalCorrelatedNoiseAnalysisModules/BuildFile | | | |---interface/ | | | |---src/ | | |---data/ | | | |---EcalCorrelatedNoiseAnalysisAlgos/BuildFile | | |---interface/ | | |---src/ | | |---test/ | | | | | \--- <other packages="" of="" calibcalorimetry>=""> | \----<other subsystems...>

The package EcalCorrelatedNoiseAnalysisModules contains one standard analyzer (EcnaAnalyzer). The user can edit its own analyzer. A detailed description is given here after in the class TEcnaRun documentation. The package EcalCorrelatedNoiseAnalysisAlgos contains the basic ECNA classes (in src and interface) and standalone executables (in directory test).

==[2]======================================================================================

CLASS TEcnaRun DOCUMENTATION

=========================================================================================== TEcnaRun.

Brief and general description -----------------------------

This class allows the user to calculate pedestals, noises, correlations and other quantities of interest for correlated noise studies on the CMS/ECAL (EB and EE).

Three main operations are performed by the class TEcnaRun. Each of them is associated with a specific method of the analyzer EcnaAnalyzer:

(1) Initialization and calls to "preparation methods". This task is done in the constructor of the analyzer: EcnaAnalyzer::EcnaAnalyzer(const edm::ParameterSet& pSet)

(2) Building of the event distributions (distributions of the sample ADC values for each sample, each channel, etc...) This task is done in the method "analyze" of the analyzer: EcnaAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)

(3) Calculation of the different quantities (correlations, pedestals, noises, etc...) from the distributions obtained in (2) and writing of these quantities in results ROOT files and also in ASCII files. This task is done in the destructor of the analyzer: EcnaAnalyzer::~EcnaAnalyzer()

Use of the class TEcnaRun by the analyzer EcnaAnalyzer ------------------------------------------------------

see files EcnaAnalyzer.h and EcnaAnalyzer.cc in package EcalCorrelatedNoiseAnalysisModules

More detailled description of the class TEcnaRun -----------------------------------------------

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

Declaration and Print Methods

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

Just after the declaration with the constructor, you can set a "Print Flag" by means of the following "Print Methods":

TEcnaRun* MyCnaRun = new TEcnaRun(...); // declaration of the object MyCnaRun

Print Methods:

MyCnaRun->PrintNoComment(); // Set flag to forbid printing of all the comments except ERRORS.

MyCnaRun->PrintWarnings(); // (DEFAULT) Set flag to authorize printing of some warnings. WARNING/INFO: information on something unusual in the data. WARNING/CORRECTION: something wrong (but not too serious) in the value of some argument. Automatically modified to a correct value.

MyCnaRun->PrintComments(); // Set flag to authorize printing of infos and some comments concerning initialisations

MyCnaRun->PrintAllComments(); // Set flag to authorize printing of all the comments

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

Method GetReadyToReadData(...) and associated methods

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

MyCnaRun->GetReadyToReadData(AnalysisName, NbOfSamples, RunNumber, FirstReqEvtNumber, LastReqEvtNumber, ReqNbOfEvts, StexNumber, [RunType]);

Explanations for the arguments (all of them are input arguments):

TString AnalysisName: code for the analysis. According to this code, the analyzer EcnaAnalyser selects the event type (PEDESTAL_STD, PEDESTAL_GAP, LASER_STD, etc...) and some other event characteristics (example: the gain in pedestal runs: AnalysisName = "Ped1" or "Ped6" or "Ped12") See EcnaAnalyser.h for a list of available codes. The string AnalysisName is automatically included in the name of the results files (see below: results files paragraph).

Int_t NbOfSamples number of samples (=10 maximum) Int_t RunNumber: run number Int_t FirstReqEvtNumber: first requested event number (numbering starting from 1) Int_t LastReqEvtNumber: last requested event number Int_t ReqNbOfEvts: requested number of events Int_t StexNumber: Stex number (Stex = SM if EB, Dee if EE)

The different quantities (correlations, etc...) will be calculated for ReqNbOfEvts events between event# FirstReqEvtNumber and event# LastReqEvtNumber. If LastReqEvtNumber = 0, the calculations will be performed from event# FirstReqEvtNumber until EOF if necessary (i.e. if the number of treated events is < ReqNbOfEvts)

Int_t RunType [optional]: run type

PEDESTAL_STD = 9 LASER_STD = 4 PEDESTAL_GAP = 18, etc... (see CMSSSW/DataFormats/EcalRawData/interface/EcalDCCHeaderBlock.h)

if RunType is specified, the run type will be displayed on the plots

==============> Method to set the start and stop times of the analysis (optional)

A method can be used to set the fStartDate and fStopDate attributes of the class TEcnaHeader from start and stop time given by the user provided these values have been recovered from the event reading:

void MyCnaRun->StartStopDate(TString StartDate, TString StopDate);

TString StartDate, StopDate: start and stop time of the run in "date" format. Example: Wed Oct 8 04:14:23 2003

If the method is not called, the values of the attributes fStartDate and fStopDate are set to: "!Start date> no info" and "!Stop date> no info" at the level of Init() method of the class TEcnaHeader. The values of StartDate and StopDate are written in the header of the .root result file.

PS: another similar method exists, with time_t type arguments:

void MyCnaRun->StartStopTime(time_t StartTime, time_t StopTime);

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

Calculation methods

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

The "calculation methods" are methods which compute the different quantities of interest. They use the ADC sample values which can be recovered by the method void SampleValues():

void SampleValues(); // 3D histo of the sample ADC value for each triple (channel,sample,event)

List of the calculation methods with associated formulae:

.......... Calculation methods ( need previous call to GetReadyToReadData(...) )

A(t,c,s,e) : ADC value for Stin t channel c, sample s, event e (Stin = tower if EB, SC if EE)

E_e , Cov_e : average, covariance over the events E_s , Cov_s : average, covariance over the samples E_s,s' : average over couples of samples (half correlation matrix)

e* : random variable associated to events s* : random variable associated to samples

void SampleMeans(); // Expectation values for each couple (channel,sample) SMean(t,c,s) = E_e[A(t,c,s,e*)]

void SampleSigmas(); // Sigmas for each couple (channel,sample) SSigma(t,c,s) = sqrt{ Cov_e[A(t,c,s,e*),A(t,c,s,e*)] }

........................................... void CovariancesBetweenSamples(); // (s,s') covariances for each channel Cov(t,c;s,s') = Cov_e[ A(t,c,s,e*) , A(t,c,s',e*) ] = E_e[ ( A(t,c,s,e*) - E_e[A(t,c,s,e*)] )*( A(t,c,s',e*) - E_e[A(t,c,s',e*)] ) ]

void CorrelationsBetweenSamples(); // (s,s') correlations for each channel Cor(t,c;s,s') = Cov(t,c;s,s')/sqrt{ Cov(t,c;s,s)*Cov(t,c;s',s') }

.............................................. *==> Stin = tower if EB, SuperCrystal if EE void LowFrequencyCovariancesBetweenChannels(); // LF (t;c,c') covariances for each Stin void HighFrequencyCovariancesBetweenChannels(); // HF (t;c,c') covariances for each Stin void LowFrequencyCorrelationsBetweenChannels(); // LF (t;c,c') correlations for each Stin void HighFrequencyCorrelationsBetweenChannels(); // HF (t;c,c') correlations for each Stin

LFCov(t;c,c') = Cov_e[ E_s[A(t,c,s*,e*)] , E_s[A(t,c',s*,e*) ]

= E_e[ ( E_s[A(t,c ,s*,e*)] - E_e[ E_s[A(t,c ,s*,e*)] ] )* ( E_s[A(t,c',s*,e*)] - E_e[ E_s[A(t,c',s*,e*)] ] ) ]

HFCov(t;c,c') = E_e[ Cov_s[ A(t,c,s*,e*) , A(t,c',s*,e*) ] ]

= E_e[ E_s[ ( A(t,c ,s*,e*) - E_s[A(t,c ,s*,e*)] )* ( A(t,c',s*,e*) - E_s[A(t,c',s*,e*)] ) ] ]

LFCor(t;c,c') = LFCov(t;c,c')/sqrt{ LFCov(t;c,c)*LFCov(t;c',c') }

HFCor(t;c,c') = HFCov(t;c,c')/sqrt{ HFCov(t;c,c)*HFCov(t;c',c') }

.............................................. . *==> Stex = SM if EB, Dee if EE void LowFrequencyMeanCorrelationsBetweenTowers(); // LF (tow,tow') correlations for each SM void HighFrequencyMeanCorrelationsBetweenTowers(); // HF (tow,tow') correlations for each SM

void LowFrequencyMeanCorrelationsBetweenSCs(); // LF (sc,sc') correlations for each Dee void HighFrequencyMeanCorrelationsBetweenSCs(); // HF (sc,sc') correlations for each Dee

.................................................... Quantities as a function of Xtal# void Pedestals(); void TotalNoise(); void LowFrequencyNoise(); void HighFrequencyNoise(); void MeanCorrelationsBetweenSamples(); void SigmaOfCorrelationsBetweenSamples();

Pedestal(t,c) = E_e[ E_s[A(t,c,s*,e*)] ] TotalNoise(t,c) = E_s[ sqrt{ E_e[ ( A(t,c,s*,e*) - E_e[A(t,c,s*,e*)] )^2 ] } ] LowFqNoise(t,c) = sqrt{ E_e[ ( E_s[A(t,c,s*,e*)] - E_e[ E_s[A(t,c,s*,e*)] ] )^2 ] } HighFqNoise(t,c) = E_e[ sqrt{ E_s[ (A(t,c,s*,e*) - E_s[A(t,c,s*,e*)] )^2 ] } ] MeanCorss(t,c) = E_s,s'[ Cor(t,c;s,s') ] SigmaCorss(t,c) = E_s,s'[ Cor(t,c;s,s') - E_s,s'[ Cor(t,c;s,s') ] ]

............ Quantities as a function of tower# (EB) or SC# (EE), average over the Xtals void AveragePedestals(); void AverageTotalNoise(); void AverageLowFrequencyNoise(); void AverageHighFrequencyNoise(); void AverageMeanCorrelationsBetweenSamples(); void AverageSigmaOfCorrelationsBetweenSamples();

t = tower if EB , SC if EE , c = channel (Xtal) AveragePedestal(t) = E_c[Pedestal(t,c*)] TotalNoise(t) = E_c[TotalNoise(t,c*)] LowFqNoise(t) = E_c[LowFqNoise(t,c*)] HighFqNoise(t) = E_c[HighFqNoise(t,c*)] MeanCorss(t) = E_c[MeanCorss(t,c*)] SigmaCorss(t) = E_c[SigmaCorss(t,c*)]

==============> RESULTS FILES

The calculation methods above provide results which can be used directly in the user's code. However, these results can also be written in results files by appropriate methods. The names of the results files are automaticaly generated.

It is also possible to write results in ASCII files => See TEcnaWrite and TEcnaGui It is also possible to plot results in ROOT canvases => See TEcnaHistos and TEcnaGui

-----------> Codification for the name of the ROOT file:

The name of the ROOT file is the following:

aaa_S1_sss_Rrrr_fff_lll_SMnnn.root for EB aaa_S1_sss_Rrrr_fff_lll_Deennn.root for EE

with: aaa = Analysis name sss = number of samples rrr = Run number fff = First requested event number lll = Last requested events mmm = Requested number of events nnn = SM number or Dee number

This name is automatically generated from the values of the arguments of the method "GetReadyToReadData".

-----------> Method which writes the results in the ROOT file:

Bool_t MyCnaRun->WriteRootFile();

===================================================================================================

Definition at line 363 of file TEcnaRun.h.


Constructor & Destructor Documentation

TEcnaRun::TEcnaRun ( )
TEcnaRun::TEcnaRun ( TEcnaObject pObjectManager,
const TString  SubDet 
)

Definition at line 26 of file TEcnaRun.cc.

References fCnaParCout, fCnaParPaths, fEcal, fFileHeader, fNbSampForFic, fObjectManager, TEcnaObject::GetPointerValue(), Init(), TEcnaParEcal::MaxSampADC(), TEcnaObject::RegisterPointer(), and SetEcalSubDetector().

{
//Constructor with argument: call to Init() and declare fEcal according to SubDet value ("EB" or "EE")

 // cout << "[Info Management] CLASS: TEcnaRun.           CREATE OBJECT: this = " << this << endl;

  Init();
  fObjectManager = (TEcnaObject*)pObjectManager;
  Long_t i_this = (Long_t)this;
  pObjectManager->RegisterPointer("TEcnaRun", i_this);

  //............................ fCnaParCout
  fCnaParCout = 0;
  Long_t iCnaParCout = pObjectManager->GetPointerValue("TEcnaParCout");
  if( iCnaParCout == 0 )
    {fCnaParCout = new TEcnaParCout(pObjectManager); /*fCnew++*/}
  else
    {fCnaParCout = (TEcnaParCout*)iCnaParCout;}

  //............................ fCnaParPaths
  fCnaParPaths = 0;
  Long_t iCnaParPaths = pObjectManager->GetPointerValue("TEcnaParPaths");
  if( iCnaParPaths == 0 )
    {fCnaParPaths = new TEcnaParPaths(pObjectManager); /*fCnew++*/}
  else
    {fCnaParPaths = (TEcnaParPaths*)iCnaParPaths;}

  //fCfgResultsRootFilePath    = fCnaParPaths->ResultsRootFilePath();
  //fCfgHistoryRunListFilePath = fCnaParPaths->HistoryRunListFilePath();

  //ffFileHeader = 0;
  //fconst Text_t *h_name  = "CnaHeader";   //==> voir cette question avec FXG
  //fconst Text_t *h_title = "CnaHeader";   //==> voir cette question avec FXG
  //ffFileHeader = new TEcnaHeader(h_name, h_title);     //fCnew++;

  //............................ fFileHeader
  const Text_t *h_name  = "CnaHeader";  //==> voir cette question avec FXG
  const Text_t *h_title = "CnaHeader";  //==> voir cette question avec FXG

  fFileHeader = 0;
  //Int_t iFileHeader = pObjectManager->GetPointerValue("TEcnaHeader");
  Long_t iFileHeader = 0;  // one TEcnaHeader object for each file since they can be open simultaneously 
  if( iFileHeader == 0 )
    {fFileHeader = new TEcnaHeader(pObjectManager, h_name, h_title); /*fCnew++*/}
  else
    {fFileHeader = (TEcnaHeader*)iFileHeader;}

  SetEcalSubDetector(SubDet.Data());
  fNbSampForFic = fEcal->MaxSampADC(); // DEFAULT Number of samples for ROOT file
}
TEcnaRun::TEcnaRun ( TEcnaObject pObjectManager,
const TString  SubDet,
const Int_t &  NbOfSamples 
)

Definition at line 77 of file TEcnaRun.cc.

References gather_cfg::cout, fCnaParCout, fCnaParPaths, fEcal, fFileHeader, fNbSampForFic, fObjectManager, fTTBELL, TEcnaObject::GetPointerValue(), Init(), TEcnaParEcal::MaxSampADC(), TEcnaObject::RegisterPointer(), and SetEcalSubDetector().

{
  //fCnaParPaths = 0; fCnaParPaths = new TEcnaParPaths();  //fCnew++;
  //fCnaParCout = 0;  fCnaParCout  = new TEcnaParCout();   //fCnew++;

  Init();
  fObjectManager = (TEcnaObject*)pObjectManager;
  Long_t i_this = (Long_t)this;
  pObjectManager->RegisterPointer("TEcnaRun", i_this);

  //............................ fCnaParCout
  fCnaParCout = 0;
  Long_t iCnaParCout = pObjectManager->GetPointerValue("TEcnaParCout");
  if( iCnaParCout == 0 )
    {fCnaParCout = new TEcnaParCout(pObjectManager); /*fCnew++*/}
  else
    {fCnaParCout = (TEcnaParCout*)iCnaParCout;}

  //............................ fCnaParPaths
  fCnaParPaths = 0;
  Long_t iCnaParPaths = pObjectManager->GetPointerValue("TEcnaParPaths");
  if( iCnaParPaths == 0 )
    {fCnaParPaths = new TEcnaParPaths(pObjectManager); /*fCnew++*/}
  else
    {fCnaParPaths = (TEcnaParPaths*)iCnaParPaths;}

  //fCfgResultsRootFilePath    = fCnaParPaths->ResultsRootFilePath();
  //fCfgHistoryRunListFilePath = fCnaParPaths->HistoryRunListFilePath();

  //............................ fFileHeader
  const Text_t *h_name  = "CnaHeader";  //==> voir cette question avec FXG
  const Text_t *h_title = "CnaHeader";  //==> voir cette question avec FXG

  fFileHeader = 0;
  //Long_t iFileHeader = pObjectManager->GetPointerValue("TEcnaHeader");
  Long_t iFileHeader = 0;  // one TEcnaHeader object for each file since they can be open simultaneously 
  if( iFileHeader == 0 )
    {fFileHeader = new TEcnaHeader(pObjectManager, h_name, h_title); /*fCnew++*/}
  else
    {fFileHeader = (TEcnaHeader*)iFileHeader;}

  SetEcalSubDetector(SubDet.Data());
  if( NbOfSamples>0 && NbOfSamples<=fEcal->MaxSampADC() )
    {
      fNbSampForFic = NbOfSamples;
    }
  else
    {
      cout << "TEcnaRun/CONSTRUCTOR> Number of required samples = " << NbOfSamples
           << ": OUT OF RANGE. Set to the default value (= " << fEcal->MaxSampADC() << ")."
           << fTTBELL << endl;
      fNbSampForFic = fEcal->MaxSampADC(); // DEFAULT Number of samples for file reading
    }
}
TEcnaRun::TEcnaRun ( const TEcnaRun dcop)

Definition at line 297 of file TEcnaRun.cc.

References gather_cfg::cout.

{
  cout << "*TEcnaRun::TEcnaRun(const TEcnaRun& dcop)> "
       << " Now is the time to write a copy constructor" 
       << endl;
  
  //{ Int_t cintoto;  cin >> cintoto; }
  
}
TEcnaRun::~TEcnaRun ( ) [virtual]

Definition at line 326 of file TEcnaRun.cc.

References gather_cfg::cout, fBuildEvtNotSkipped, fCdelete, fCnew, fCodePrintAllComments, fCodePrintNoComment, fCodePrintWarnings, fFlagPrint, fMiscDiag, fNbOfMiscDiagCounters, fT1d_av_ev_corss, fT1d_av_hifn, fT1d_av_lofn, fT1d_av_mped, fT1d_av_sig_corss, fT1d_av_totn, fT1d_ev, fT1d_ev_cor_ss, fT1d_ev_ev, fT1d_evevt_of_sigsamp, fT1d_evsamp_of_sigevt, fT1d_NbOfEvts, fT1d_sig, fT1d_sig_cor_ss, fT1d_sigevt_of_evsamp, fT1d_StexStinFromIndex, fT1dCrysNumbersTable, fT2d1_hf_cor, fT2d1_hf_cov, fT2d1_hfcc_mostins, fT2d1_lf_cor, fT2d1_lf_cov, fT2d1_lfcc_mostins, fT2d_ev, fT2d_hf_cor, fT2d_hf_cov, fT2d_hfcc_mostins, fT2d_lf_cor, fT2d_lf_cov, fT2d_lfcc_mostins, fT2d_NbOfEvts, fT2d_sig, fT2dCrysNumbersTable, fT3d1_AdcValues, fT3d1_cor_ss, fT3d1_cov_ss, fT3d2_AdcValues, fT3d2_cor_ss, fT3d2_cov_ss, fT3d_AdcValues, fT3d_cor_ss, fT3d_cov_ss, fTagAdcEvt, fTagAvHfn, fTagAvLfn, fTagAvMeanCorss, fTagAvPed, fTagAvSigCorss, fTagAvTno, fTagCorCss, fTagCovCss, fTagHFccMoStins, fTagHfCor, fTagHfCov, fTagHfn, fTagLFccMoStins, fTagLfCor, fTagLfCov, fTagLfn, fTagMeanCorss, fTagMSp, fTagNbOfEvts, fTagPed, fTagSigCorss, fTagSSp, fTagStinNumbers, fTagTno, fTTBELL, and i.

{
  //Destructor
  
  if(fFlagPrint == fCodePrintAllComments)
    {
      cout << "*TEcnaRun::~TEcnaRun()> Entering destructor." << endl;
    }

  if(fFlagPrint != fCodePrintNoComment || fFlagPrint == fCodePrintWarnings )
    {
      if( fBuildEvtNotSkipped > 0 )
        {
          cout << "************************************************************************************* "
               << endl;
          cout << "*TEcnaRun::~TEcnaRun()> Nb of calls to GetSampleAdcValues by cmsRun: "
               << fBuildEvtNotSkipped << endl;
          cout << "************************************************************************************* "
               << endl;
        }
    }

  if(fFlagPrint == fCodePrintAllComments)
    {
      Int_t misc_czero = 0;
      for(Int_t i = 0; i < fNbOfMiscDiagCounters; i++)
        {
          if( fMiscDiag[i] != 0 )
            {
              cout << "                          fMiscDiag Counter "
                   << setw(3) << i << " = " << setw(9) << fMiscDiag[i]
                   << " (INFO: alloc on non zero freed zone) " << endl;
            }
          else
            {
              misc_czero++;
            }
        }
      cout << "                          Nb of fMiscDiag counters at zero: "
           << misc_czero << " (total nb of counters: "
           << fNbOfMiscDiagCounters << ")" << endl;
    }
  
  if (fMiscDiag                != 0){delete [] fMiscDiag;                 fCdelete++;}
  
  //if (fFileHeader              != 0){delete fFileHeader;                  fCdelete++;}
  //if (fEcal                    != 0){delete fEcal;                        fCdelete++;}
  //if (fEcalNumbering           != 0){delete fEcalNumbering;               fCdelete++;}
  //if (fCnaParCout              != 0){delete fCnaParCout;                  fCdelete++;}
  //if (fCnaParPaths             != 0){delete fCnaParPaths;                 fCdelete++;}
  //if (fCnaWrite                != 0){delete fCnaWrite;                    fCdelete++;}
  
  if (fT1d_StexStinFromIndex   != 0){delete [] fT1d_StexStinFromIndex;    fCdelete++;}

  if (fT2d_NbOfEvts        != 0){delete [] fT2d_NbOfEvts;         fCdelete++;}
  if (fT1d_NbOfEvts        != 0){delete [] fT1d_NbOfEvts;         fCdelete++;}

  if (fT3d_AdcValues        != 0){delete [] fT3d_AdcValues;         fCdelete++;}
  if (fT3d2_AdcValues       != 0){delete [] fT3d2_AdcValues;        fCdelete++;}
  if (fT3d1_AdcValues       != 0){delete [] fT3d1_AdcValues;        fCdelete++;}

  if (fT2d_ev              != 0){delete [] fT2d_ev;               fCdelete++;}
  if (fT1d_ev              != 0){delete [] fT1d_ev;               fCdelete++;}

  if (fT2d_sig             != 0){delete [] fT2d_sig;              fCdelete++;}
  if (fT1d_sig             != 0){delete [] fT1d_sig;              fCdelete++;}

  if (fT3d_cov_ss          != 0){delete [] fT3d_cov_ss;           fCdelete++;}
  if (fT3d2_cov_ss         != 0){delete [] fT3d2_cov_ss;          fCdelete++;}
  if (fT3d1_cov_ss         != 0){delete [] fT3d1_cov_ss;          fCdelete++;}

  if (fT3d_cor_ss          != 0){delete [] fT3d_cor_ss;           fCdelete++;}
  if (fT3d2_cor_ss         != 0){delete [] fT3d2_cor_ss;          fCdelete++;}
  if (fT3d1_cor_ss         != 0){delete [] fT3d1_cor_ss;          fCdelete++;}

  if (fT2d_lf_cov          != 0){delete [] fT2d_lf_cov;           fCdelete++;}
  if (fT2d1_lf_cov         != 0){delete [] fT2d1_lf_cov;          fCdelete++;}

  if (fT2d_lf_cor          != 0){delete [] fT2d_lf_cor;           fCdelete++;}
  if (fT2d1_lf_cor         != 0){delete [] fT2d1_lf_cor;          fCdelete++;}

  if (fT2d_hf_cov          != 0){delete [] fT2d_hf_cov;           fCdelete++;}
  if (fT2d1_hf_cov         != 0){delete [] fT2d1_hf_cov;          fCdelete++;}

  if (fT2d_hf_cor          != 0){delete [] fT2d_hf_cor;           fCdelete++;}
  if (fT2d1_hf_cor         != 0){delete [] fT2d1_hf_cor;          fCdelete++;}

  if (fT2d_lfcc_mostins    != 0){delete [] fT2d_lfcc_mostins;     fCdelete++;}
  if (fT2d1_lfcc_mostins   != 0){delete [] fT2d1_lfcc_mostins ;   fCdelete++;}

  if (fT2d_hfcc_mostins    != 0){delete [] fT2d_hfcc_mostins ;    fCdelete++;}
  if (fT2d1_hfcc_mostins   != 0){delete [] fT2d1_hfcc_mostins;    fCdelete++;}

  if (fT1d_ev_ev             != 0){delete [] fT1d_ev_ev;              fCdelete++;}
  if (fT1d_evsamp_of_sigevt  != 0){delete [] fT1d_evsamp_of_sigevt;   fCdelete++;}
  if (fT1d_ev_cor_ss         != 0){delete [] fT1d_ev_cor_ss;          fCdelete++;}
  if (fT1d_av_mped           != 0){delete [] fT1d_av_mped;            fCdelete++;}
  if (fT1d_av_totn           != 0){delete [] fT1d_av_totn;            fCdelete++;}
  if (fT1d_av_lofn           != 0){delete [] fT1d_av_lofn;            fCdelete++;}
  if (fT1d_av_hifn           != 0){delete [] fT1d_av_hifn;            fCdelete++;}
  if (fT1d_av_ev_corss       != 0){delete [] fT1d_av_ev_corss;        fCdelete++;}
  if (fT1d_av_sig_corss      != 0){delete [] fT1d_av_sig_corss;       fCdelete++;}

  if (fT1d_sigevt_of_evsamp    != 0){delete [] fT1d_sigevt_of_evsamp;     fCdelete++;}
  if (fT1d_evevt_of_sigsamp    != 0){delete [] fT1d_evevt_of_sigsamp;     fCdelete++;}
  if (fT1d_sig_cor_ss          != 0){delete [] fT1d_sig_cor_ss;           fCdelete++;}

  if (fT2dCrysNumbersTable     != 0){delete [] fT2dCrysNumbersTable;      fCdelete++;}
  if (fT1dCrysNumbersTable     != 0){delete [] fT1dCrysNumbersTable;      fCdelete++;}

  if (fTagStinNumbers          != 0){delete [] fTagStinNumbers;           fCdelete++;}
  if (fTagNbOfEvts             != 0){delete [] fTagNbOfEvts;              fCdelete++;}
  if (fTagAdcEvt               != 0){delete [] fTagAdcEvt;                fCdelete++;}
  if (fTagMSp                  != 0){delete [] fTagMSp;                   fCdelete++;}
  if (fTagSSp                  != 0){delete [] fTagSSp;                   fCdelete++;}

  if (fTagCovCss               != 0){delete [] fTagCovCss;                fCdelete++;}
  if (fTagCorCss               != 0){delete [] fTagCorCss;                fCdelete++;}

  if (fTagHfCov                != 0){delete [] fTagHfCov;                 fCdelete++;}
  if (fTagHfCor                != 0){delete [] fTagHfCor;                 fCdelete++;}
  if (fTagLfCov                != 0){delete [] fTagLfCov;                 fCdelete++;}
  if (fTagLfCor                != 0){delete [] fTagLfCor;                 fCdelete++;}

  if (fTagLFccMoStins          != 0){delete [] fTagLFccMoStins;           fCdelete++;}
  if (fTagHFccMoStins          != 0){delete [] fTagHFccMoStins;           fCdelete++;}

  if (fTagPed                 != 0){delete [] fTagPed;                  fCdelete++;}
  if (fTagTno                 != 0){delete [] fTagTno;                  fCdelete++;}
  if (fTagMeanCorss           != 0){delete [] fTagMeanCorss;            fCdelete++;}

  if (fTagLfn                != 0){delete [] fTagLfn;                 fCdelete++;}
  if (fTagHfn                != 0){delete [] fTagHfn;                 fCdelete++;}
  if (fTagSigCorss           != 0){delete [] fTagSigCorss;            fCdelete++;}

  if (fTagAvPed          != 0){delete [] fTagAvPed;           fCdelete++;}
  if (fTagAvTno          != 0){delete [] fTagAvTno;           fCdelete++;}
  if (fTagAvLfn          != 0){delete [] fTagAvLfn;           fCdelete++;}
  if (fTagAvHfn          != 0){delete [] fTagAvHfn;           fCdelete++;}
  if (fTagAvMeanCorss    != 0){delete [] fTagAvMeanCorss;     fCdelete++;}
  if (fTagAvSigCorss     != 0){delete [] fTagAvSigCorss;      fCdelete++;}

  if ( fCnew != fCdelete )
    {
      cout << "!TEcnaRun::~TEcnaRun()> WRONG MANAGEMENT OF MEMORY ALLOCATIONS: fCnew = "
           << fCnew << ", fCdelete = " << fCdelete << fTTBELL << endl;
    }
  else
    {
      // cout << "*TEcnaRun::~TEcnaRun()> Management of memory allocations: OK. fCnew = "
      //   << fCnew << ", fCdelete = " << fCdelete << endl;
    }

  if(fFlagPrint == fCodePrintAllComments)
    {
      cout << "*TEcnaRun::~TEcnaRun()> Exiting destructor (this = " << this << ")." << endl
           << "~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#"
           << endl;
    }

 // cout << "[Info Management] CLASS: TEcnaRun.           DESTROY OBJECT: this = " << this << endl;
}

Member Function Documentation

void TEcnaRun::AverageHighFrequencyNoise ( )

Definition at line 2132 of file TEcnaRun.cc.

References gather_cfg::cout, TEcnaHeader::fAvHfnCalc, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fEcalNumbering, fFileHeader, fFlagPrint, fMiscDiag, TEcnaHeader::fStex, fStexName, fStinName, fT1d_av_hifn, fT1d_evevt_of_sigsamp, fTagAvHfn, fTagHfn, TEcnaNumbering::Get0StexEchaFrom1StexStinAnd0StinEcha(), HighFrequencyNoise(), TEcnaParEcal::MaxCrysInStin(), TEcnaNumbering::MaxCrysInStinEcna(), and TEcnaParEcal::MaxStinEcnaInStex().

Referenced by StandardCalculations().

{
// Calculation of the average 
// (over the Stin's 0 to fEcal->MaxStinInStex()) of the High Frequency Noise
  
  //... preliminary calculation of the High Frequency Noise if not done yet
  if ( fTagHfn[0] != 1 ){HighFrequencyNoise(); fTagHfn[0]=0;}
  //................... Allocation av_hifn + init to zero (mandatory)
  if( fT1d_av_hifn == 0 ){fT1d_av_hifn = new Double_t[fEcal->MaxStinEcnaInStex()]; fCnew++;}
  for(Int_t i0StexStinEcna = 0; i0StexStinEcna < fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
    {if( fT1d_av_hifn[i0StexStinEcna] != (Double_t)0 )
      {fMiscDiag[44]++; fT1d_av_hifn[i0StexStinEcna] = (Double_t)0;}}

  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::AverageHighFrequencyNoise()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation, for all the "
         << fStinName.Data() << "s, of the average High Frequency Noise" << endl;}

  //................... Calculation
  for(Int_t i0StexStinEcna = 0; i0StexStinEcna < fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
    {   
      Int_t n1StexStinEcna = i0StexStinEcna+1;
      fT1d_av_hifn[i0StexStinEcna] = (Double_t)0;
      for(Int_t i0StinEcha = 0; i0StinEcha < fEcal->MaxCrysInStin(); i0StinEcha++)
        {
          Int_t i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(n1StexStinEcna, i0StinEcha);

          if( fStexName == "SM " )
            {fT1d_av_hifn[i0StexStinEcna] += fT1d_evevt_of_sigsamp[i0StexEcha];}
          
          if( fStexName == "Dee" )
            {
              //---------------- Special translation for mixed SCEcna (29 and 32)
              //                 Xtal 11 of SCEcna 29 -> Xtal 11 of SCEcna 10
              //                 Xtal 11 of SCEcna 32 -> Xtal 11 of SCEcna 11
              Int_t n1StinEcha = i0StinEcha+1;
              if( n1StexStinEcna == 10 &&  n1StinEcha == 11 )
                {i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(29, i0StinEcha);}
              if( n1StexStinEcna == 11 &&  n1StinEcha == 11 )
                {i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(32, i0StinEcha);}
              if( !( (n1StexStinEcna == 29 || n1StexStinEcna == 32) && n1StinEcha == 11 )  )
                {fT1d_av_hifn[i0StexStinEcna] += fT1d_evevt_of_sigsamp[i0StexEcha];}
            }
        }
      Double_t xdivis = (Double_t)0.;
      if( fStexName == "SM "  )
        {xdivis = (Double_t)fEcal->MaxCrysInStin();}
      if( fStexName == "Dee" )
        {xdivis = (Double_t)fEcalNumbering->MaxCrysInStinEcna(fFileHeader->fStex, n1StexStinEcna, "TEcnaRun");}

      fT1d_av_hifn[i0StexStinEcna] = fT1d_av_hifn[i0StexStinEcna]/xdivis;
    }
  fTagAvHfn[0] = 1;                      fFileHeader->fAvHfnCalc++;  
}
void TEcnaRun::AverageLowFrequencyNoise ( )

Definition at line 2072 of file TEcnaRun.cc.

References gather_cfg::cout, TEcnaHeader::fAvLfnCalc, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fEcalNumbering, fFileHeader, fFlagPrint, fMiscDiag, TEcnaHeader::fStex, fStexName, fStinName, fT1d_av_lofn, fT1d_sigevt_of_evsamp, fTagAvLfn, fTagLfn, TEcnaNumbering::Get0StexEchaFrom1StexStinAnd0StinEcha(), LowFrequencyNoise(), TEcnaParEcal::MaxCrysInStin(), TEcnaNumbering::MaxCrysInStinEcna(), and TEcnaParEcal::MaxStinEcnaInStex().

Referenced by StandardCalculations().

{
// Calculation of the average 
// (over the Stin's 0 to fEcal->MaxStinInStex()) of the Low Frequency Noise
  
  //... preliminary calculation of the Low Frequency Noise if not done yet
  if ( fTagLfn[0] != 1 ){LowFrequencyNoise(); fTagLfn[0]=0;}
  //................... Allocation av_lofn + init to zero (mandatory)
  if( fT1d_av_lofn == 0 ){fT1d_av_lofn = new Double_t[fEcal->MaxStinEcnaInStex()]; fCnew++;}
  for(Int_t i0StexStinEcna = 0; i0StexStinEcna < fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
    {if( fT1d_av_lofn[i0StexStinEcna] != (Double_t)0 )
      {fMiscDiag[43]++; fT1d_av_lofn[i0StexStinEcna] = (Double_t)0;}}

  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::AverageLowFrequencyNoise()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation, for all the "
         << fStinName.Data() << "s, of the average Low Frequency Noise" << endl;}

  //................... Calculation
  for(Int_t i0StexStinEcna = 0; i0StexStinEcna < fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
    {
      Int_t n1StexStinEcna = i0StexStinEcna+1;
      fT1d_av_lofn[i0StexStinEcna] = (Double_t)0;
      for(Int_t i0StinEcha = 0; i0StinEcha < fEcal->MaxCrysInStin(); i0StinEcha++)
        {
          Int_t i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(n1StexStinEcna, i0StinEcha);

          if( fStexName == "SM " )
            {fT1d_av_lofn[i0StexStinEcna] += fT1d_sigevt_of_evsamp[i0StexEcha];}
          
          if( fStexName == "Dee" )
            {
              //---------------- Special translation for mixed SCEcna (29 and 32)
              //                 Xtal 11 of SCEcna 29 -> Xtal 11 of SCEcna 10
              //                 Xtal 11 of SCEcna 32 -> Xtal 11 of SCEcna 11
              Int_t n1StinEcha = i0StinEcha+1;
              if( n1StexStinEcna == 10 &&  n1StinEcha == 11 )
                {i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(29, i0StinEcha);}
              if( n1StexStinEcna == 11 &&  n1StinEcha == 11 )
                {i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(32, i0StinEcha);}
              if( !( (n1StexStinEcna == 29 || n1StexStinEcna == 32) && n1StinEcha == 11 )  )
                {fT1d_av_lofn[i0StexStinEcna] += fT1d_sigevt_of_evsamp[i0StexEcha];}
            }
        }
      Double_t xdivis = (Double_t)0.;
      if( fStexName == "SM "  )
        {xdivis = (Double_t)fEcal->MaxCrysInStin();}
      if( fStexName == "Dee" )
        {xdivis = (Double_t)fEcalNumbering->MaxCrysInStinEcna(fFileHeader->fStex, n1StexStinEcna, "TEcnaRun");}
      
      fT1d_av_lofn[i0StexStinEcna] = fT1d_av_lofn[i0StexStinEcna]/xdivis;
    }
  fTagAvLfn[0] = 1;                      fFileHeader->fAvLfnCalc++; 
}
void TEcnaRun::AverageMeanCorrelationsBetweenSamples ( )

Definition at line 2192 of file TEcnaRun.cc.

References gather_cfg::cout, TEcnaHeader::fAvMeanCorssCalc, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fEcalNumbering, fFileHeader, fFlagPrint, fMiscDiag, TEcnaHeader::fStex, fStexName, fStinName, fT1d_av_ev_corss, fT1d_ev_cor_ss, fTagAvMeanCorss, fTagMeanCorss, TEcnaNumbering::Get0StexEchaFrom1StexStinAnd0StinEcha(), TEcnaParEcal::MaxCrysInStin(), TEcnaNumbering::MaxCrysInStinEcna(), TEcnaParEcal::MaxStinEcnaInStex(), and MeanCorrelationsBetweenSamples().

Referenced by StandardCalculations().

{
// Calculation of the average 
// (over the Stin's 0 to fEcal->MaxStinInStex()) of the mean cor(s,s)
  
  //... preliminary calculation of the mean cor(s,s) if not done yet
  if ( fTagMeanCorss[0] != 1 ){MeanCorrelationsBetweenSamples(); fTagMeanCorss[0]=0;}
  //................... Allocation av_ev_corss + init to zero (mandatory)
  if( fT1d_av_ev_corss == 0 ){fT1d_av_ev_corss = new Double_t[fEcal->MaxStinEcnaInStex()]; fCnew++;}
  for(Int_t i0StexStinEcna = 0; i0StexStinEcna < fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
    {if( fT1d_av_ev_corss[i0StexStinEcna] != (Double_t)0 )
      {fMiscDiag[45]++; fT1d_av_ev_corss[i0StexStinEcna] = (Double_t)0;}}

  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::AverageMeanCorrelationsBetweenSamples()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation, for all the "
         << fStinName.Data() << "s, of the average mean cor(s,s)" << endl;}

  //................... Calculation
  for(Int_t i0StexStinEcna = 0; i0StexStinEcna < fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
    {
      Int_t n1StexStinEcna = i0StexStinEcna+1;
      fT1d_av_ev_corss[i0StexStinEcna] = (Double_t)0;
      for(Int_t i0StinEcha = 0; i0StinEcha < fEcal->MaxCrysInStin(); i0StinEcha++)
        {
          Int_t i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(n1StexStinEcna, i0StinEcha);

          if( fStexName == "SM " )
            {fT1d_av_ev_corss[i0StexStinEcna] += fT1d_ev_cor_ss[i0StexEcha];}
          
          if( fStexName == "Dee" )
            {
              //---------------- Special translation for mixed SCEcna (29 and 32)
              //                 Xtal 11 of SCEcna 29 -> Xtal 11 of SCEcna 10
              //                 Xtal 11 of SCEcna 32 -> Xtal 11 of SCEcna 11
              Int_t n1StinEcha = i0StinEcha+1;
              if( n1StexStinEcna == 10 &&  n1StinEcha == 11 )
                {i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(29, i0StinEcha);}
              if( n1StexStinEcna == 11 &&  n1StinEcha == 11 )
                {i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(32, i0StinEcha);}
              if( !( (n1StexStinEcna == 29 || n1StexStinEcna == 32) && n1StinEcha == 11 )  )
                {fT1d_av_ev_corss[i0StexStinEcna] += fT1d_ev_cor_ss[i0StexEcha];}
            }
        }
      Double_t xdivis = (Double_t)0.;
      if( fStexName == "SM "  )
        {xdivis = (Double_t)fEcal->MaxCrysInStin();}
      if( fStexName == "Dee" )
        {xdivis = (Double_t)fEcalNumbering->MaxCrysInStinEcna(fFileHeader->fStex, n1StexStinEcna, "TEcnaRun");}

      fT1d_av_ev_corss[i0StexStinEcna] = fT1d_av_ev_corss[i0StexStinEcna]/xdivis;
    }
  fTagAvMeanCorss[0] = 1;                      fFileHeader->fAvMeanCorssCalc++;    
}
void TEcnaRun::AveragePedestals ( )

Definition at line 1951 of file TEcnaRun.cc.

References gather_cfg::cout, TEcnaHeader::fAvPedCalc, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fEcalNumbering, fFileHeader, fFlagPrint, fMiscDiag, TEcnaHeader::fStex, fStexName, fStinName, fT1d_av_mped, fT1d_ev_ev, fTagAvPed, fTagPed, TEcnaNumbering::Get0StexEchaFrom1StexStinAnd0StinEcha(), TEcnaParEcal::MaxCrysInStin(), TEcnaNumbering::MaxCrysInStinEcna(), TEcnaParEcal::MaxStinEcnaInStex(), and Pedestals().

Referenced by StandardCalculations().

{
// Calculation of the average 
// (over the Stin's 0 to fEcal->MaxStinInStex()) of the Pedestals

  //... preliminary calculation of the Pedestals if not done yet
  if ( fTagPed[0] != 1 ){Pedestals(); fTagPed[0]=0;}
  //................... Allocation av_mped + init to zero (mandatory)
  if( fT1d_av_mped == 0 ){fT1d_av_mped = new Double_t[fEcal->MaxStinEcnaInStex()]; fCnew++;}
  for(Int_t i0StexStinEcna = 0; i0StexStinEcna < fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
    {if( fT1d_av_mped[i0StexStinEcna] != (Double_t)0 )
      {fMiscDiag[41]++; fT1d_av_mped[i0StexStinEcna] = (Double_t)0;}}
 
  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::AveragePedestals()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation, for all the "
         << fStinName.Data() << "s, of the average Pedestals" << endl;}

  //................... Calculation
  for(Int_t i0StexStinEcna = 0; i0StexStinEcna < fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
    {
      Int_t n1StexStinEcna = i0StexStinEcna+1;
      fT1d_av_mped[i0StexStinEcna] = (Double_t)0;
      for(Int_t i0StinEcha = 0; i0StinEcha < fEcal->MaxCrysInStin(); i0StinEcha++)
        {
          Int_t i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(n1StexStinEcna, i0StinEcha);

          if( fStexName == "SM " )
            {fT1d_av_mped[i0StexStinEcna] += fT1d_ev_ev[i0StexEcha];}

          if( fStexName == "Dee" )
            {
              //---------------- Special translation for mixed SCEcna (29 and 32)
              //                 Xtal 11 of SCEcna 29 -> Xtal 11 of SCEcna 10
              //                 Xtal 11 of SCEcna 32 -> Xtal 11 of SCEcna 11
              Int_t n1StinEcha = i0StinEcha+1;
              if( n1StexStinEcna == 10 && n1StinEcha == 11 )
                {i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(29, i0StinEcha);}
              if( n1StexStinEcna == 11 && n1StinEcha == 11 )
                {i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(32, i0StinEcha);}
              if( !( (n1StexStinEcna == 29 || n1StexStinEcna == 32) && n1StinEcha == 11 )  )
                {fT1d_av_mped[i0StexStinEcna] += fT1d_ev_ev[i0StexEcha];}
            }
        }
      Double_t xdivis = (Double_t)0.;
      if( fStexName == "SM "  )
        {xdivis = (Double_t)fEcal->MaxCrysInStin();}
      if( fStexName == "Dee" )
        {xdivis = (Double_t)fEcalNumbering->MaxCrysInStinEcna(fFileHeader->fStex, n1StexStinEcna, "TEcnaRun");}
      
      fT1d_av_mped[i0StexStinEcna] = fT1d_av_mped[i0StexStinEcna]/xdivis;
    }
  
  fTagAvPed[0] = 1;                      fFileHeader->fAvPedCalc++;
}
void TEcnaRun::AverageSigmaOfCorrelationsBetweenSamples ( )

Definition at line 2252 of file TEcnaRun.cc.

References gather_cfg::cout, TEcnaHeader::fAvSigCorssCalc, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fEcalNumbering, fFileHeader, fFlagPrint, fMiscDiag, TEcnaHeader::fStex, fStexName, fStinName, fT1d_av_sig_corss, fT1d_sig_cor_ss, fTagAvSigCorss, fTagSigCorss, TEcnaNumbering::Get0StexEchaFrom1StexStinAnd0StinEcha(), TEcnaParEcal::MaxCrysInStin(), TEcnaNumbering::MaxCrysInStinEcna(), TEcnaParEcal::MaxStinEcnaInStex(), and SigmaOfCorrelationsBetweenSamples().

Referenced by StandardCalculations().

{
// Calculation of the average 
// (over the Stin's 0 to fEcal->MaxStinInStex()) of the sigma of cor(s,s)
  
  //... preliminary calculation of the sigma of cor(s,s) if not done yet
  if ( fTagSigCorss[0] != 1 ){SigmaOfCorrelationsBetweenSamples(); fTagSigCorss[0]=0;}
  //................... Allocation av_sig_corss + init to zero (mandatory)
  if( fT1d_av_sig_corss == 0 ){fT1d_av_sig_corss = new Double_t[fEcal->MaxStinEcnaInStex()]; fCnew++;}
  for(Int_t i0StexStinEcna = 0; i0StexStinEcna < fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
    {if( fT1d_av_sig_corss[i0StexStinEcna] != (Double_t)0 )
      {fMiscDiag[46]++; fT1d_av_sig_corss[i0StexStinEcna] = (Double_t)0;}}

  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::AverageSigmaOfCorrelationsBetweenSamples()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation, for all the "
         << fStinName.Data() << "s, of the average sigma of cor(s,s)" << endl;}

  //................... Calculation
  for(Int_t i0StexStinEcna = 0; i0StexStinEcna < fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
    {
      Int_t n1StexStinEcna = i0StexStinEcna+1;
      fT1d_av_sig_corss[i0StexStinEcna] = (Double_t)0;
      for(Int_t i0StinEcha = 0; i0StinEcha < fEcal->MaxCrysInStin(); i0StinEcha++)
        {
          Int_t i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(n1StexStinEcna, i0StinEcha);

          if( fStexName == "SM " )
            {fT1d_av_sig_corss[i0StexStinEcna] += fT1d_sig_cor_ss[i0StexEcha];}
          
          if( fStexName == "Dee" )
            {
              //---------------- Special translation for mixed SCEcna (29 and 32)
              //                 Xtal 11 of SCEcna 29 -> Xtal 11 of SCEcna 10
              //                 Xtal 11 of SCEcna 32 -> Xtal 11 of SCEcna 11
              Int_t n1StinEcha = i0StinEcha+1;
              if( n1StexStinEcna == 10 &&  n1StinEcha == 11 )
                {i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(29, i0StinEcha);}
              if( n1StexStinEcna == 11 &&  n1StinEcha == 11 )
                {i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(32, i0StinEcha);}
              if( !( (n1StexStinEcna == 29 || n1StexStinEcna == 32) && n1StinEcha == 11 )  )
                {fT1d_av_sig_corss[i0StexStinEcna] += fT1d_sig_cor_ss[i0StexEcha];}
            }
        }
      Double_t xdivis = (Double_t)0.;
      if( fStexName == "SM "  )
        {xdivis = (Double_t)fEcal->MaxCrysInStin();}
      if( fStexName == "Dee" )
        {xdivis = (Double_t)fEcalNumbering->MaxCrysInStinEcna(fFileHeader->fStex, n1StexStinEcna, "TEcnaRun");}

      fT1d_av_sig_corss[i0StexStinEcna] = fT1d_av_sig_corss[i0StexStinEcna]/xdivis;
    }
  fTagAvSigCorss[0] = 1;                      fFileHeader->fAvSigCorssCalc++;       
}
void TEcnaRun::AverageTotalNoise ( )

Definition at line 2012 of file TEcnaRun.cc.

References gather_cfg::cout, TEcnaHeader::fAvTnoCalc, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fEcalNumbering, fFileHeader, fFlagPrint, fMiscDiag, TEcnaHeader::fStex, fStexName, fStinName, fT1d_av_totn, fT1d_evsamp_of_sigevt, fTagAvTno, fTagTno, TEcnaNumbering::Get0StexEchaFrom1StexStinAnd0StinEcha(), TEcnaParEcal::MaxCrysInStin(), TEcnaNumbering::MaxCrysInStinEcna(), TEcnaParEcal::MaxStinEcnaInStex(), and TotalNoise().

Referenced by StandardCalculations().

{
// Calculation of the average 
// (over the Stin's 0 to fEcal->MaxStinInStex()) of the Total Noise
  
  //... preliminary calculation of the averaged Total Noise if not done yet
  if ( fTagTno[0] != 1 ){TotalNoise(); fTagTno[0]=0;}
  //................... Allocation av_totn + init to zero (mandatory)
  if( fT1d_av_totn == 0 ){fT1d_av_totn = new Double_t[fEcal->MaxStinEcnaInStex()]; fCnew++;}
  for(Int_t i0StexStinEcna = 0; i0StexStinEcna < fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
    {if( fT1d_av_totn[i0StexStinEcna] != (Double_t)0 )
      {fMiscDiag[42]++; fT1d_av_totn[i0StexStinEcna] = (Double_t)0;}}

  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::AverageTotalNoise()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation, for all the "
         << fStinName.Data() << "s, of the average total Noise" << endl;}

  //................... Calculation
  for(Int_t i0StexStinEcna = 0; i0StexStinEcna < fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
    {
      Int_t n1StexStinEcna = i0StexStinEcna+1;
      fT1d_av_totn[i0StexStinEcna] = (Double_t)0;
      for(Int_t i0StinEcha = 0; i0StinEcha < fEcal->MaxCrysInStin(); i0StinEcha++)
        {
          Int_t i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(n1StexStinEcna, i0StinEcha);
          
          if( fStexName == "SM " )
            {fT1d_av_totn[i0StexStinEcna] += fT1d_evsamp_of_sigevt[i0StexEcha];}
          
          if( fStexName == "Dee" )
            {
              //---------------- Special translation for mixed SCEcna (29 and 32)
              //                 Xtal 11 of SCEcna 29 -> Xtal 11 of SCEcna 10
              //                 Xtal 11 of SCEcna 32 -> Xtal 11 of SCEcna 11
              Int_t n1StinEcha = i0StinEcha+1;
              if( n1StexStinEcna == 10 && n1StinEcha == 11 )
                {i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(29, i0StinEcha);}
              if( n1StexStinEcna == 11 && n1StinEcha == 11 )
                {i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(32, i0StinEcha);}
              if( !( (n1StexStinEcna == 29 || n1StexStinEcna == 32) && n1StinEcha == 11 )  )
                {fT1d_av_totn[i0StexStinEcna] += fT1d_evsamp_of_sigevt[i0StexEcha];}
            }
        }
      Double_t xdivis = (Double_t)0.;
      if( fStexName == "SM "  )
        {xdivis = (Double_t)fEcal->MaxCrysInStin();}
      if( fStexName == "Dee" )
        {xdivis = (Double_t)fEcalNumbering->MaxCrysInStinEcna(fFileHeader->fStex, n1StexStinEcna, "TEcnaRun");}
      
      fT1d_av_totn[i0StexStinEcna] = fT1d_av_totn[i0StexStinEcna]/xdivis;
    }
  fTagAvTno[0] = 1;                      fFileHeader->fAvTnoCalc++;
}
Bool_t TEcnaRun::CloseRootFile ( const Text_t *  name)

Definition at line 2969 of file TEcnaRun.cc.

References TEcnaRootFile::CloseFile(), gather_cfg::cout, fCnaParPaths, fCodePrintAllComments, fFlagPrint, fOpenRootFile, fTTBELL, gCnaRootFile, and TEcnaParPaths::ResultsRootFilePath().

Referenced by WriteRootFile().

                                                 {
//Close the Root file
 
  TString s_name;
  s_name = fCnaParPaths->ResultsRootFilePath();
  s_name.Append('/');
  s_name.Append(name);

  Bool_t ok_close = kFALSE;

  if (fOpenRootFile == kTRUE ) 
    {
      gCnaRootFile->CloseFile();

      if(fFlagPrint != fCodePrintAllComments){
        cout << "*TEcnaRun::CloseRootFile> ROOT file " << s_name.Data() << " closed." << endl;}

      //     delete gCnaRootFile;     gCnaRootFile = 0;          fCdelete++;

      fOpenRootFile = kFALSE;
      ok_close      = kTRUE;
    }
  else
    {
      cout << "*TEcnaRun::CloseRootFile(...)> No close since no file is open."
           << fTTBELL << endl;
    }
  return ok_close;
}
void TEcnaRun::CorrelationsBetweenSamples ( )

Definition at line 1506 of file TEcnaRun.cc.

References gather_cfg::cout, CovariancesBetweenSamples(), fCnew, fCodePrintAllComments, fCodePrintNoComment, TEcnaHeader::fCorCssCalc, fEcal, fFileHeader, fFlagPrint, fNbSampForCalc, fT3d1_cor_ss, fT3d2_cor_ss, fT3d_cor_ss, fT3d_cov_ss, fTagCorCss, fTagCovCss, i, j, TEcnaParEcal::MaxCrysEcnaInStex(), and mathSSE::sqrt().

Referenced by MeanCorrelationsBetweenSamples(), and StandardCalculations().

{
//Calculation of the correlations between samples for all the StexEchas

  //... preliminary calculation of the covariances if not done yet.
  //    Test only the first tag since the cov are computed globaly
  //    but set all the tags to 0 because we don't want to write
  //    the covariances in the result ROOT file    
  if ( fTagCovCss[0] != 1 ){CovariancesBetweenSamples();
  for (Int_t j0StexEcha = 0 ; j0StexEcha < fEcal->MaxCrysEcnaInStex() ; j0StexEcha++)
    {fTagCovCss[j0StexEcha] = 0;}}
  
  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::CorrelationsBetweenSamples()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation: correlations between samples"
         << " for each channel." << endl;}

  //................... Allocations cor_ss
  if( fT3d_cor_ss == 0){
    const Int_t n_samp = fNbSampForCalc;
    const Int_t n_StexEcha = fEcal->MaxCrysEcnaInStex();
    fT3d_cor_ss  = new Double_t**[n_StexEcha];                fCnew++;  
    fT3d2_cor_ss = new  Double_t*[n_StexEcha*n_samp];         fCnew++;  
    fT3d1_cor_ss = new   Double_t[n_StexEcha*n_samp*n_samp];  fCnew++;  
    for(Int_t i = 0 ; i < n_StexEcha ; i++){
      fT3d_cor_ss[i] = &fT3d2_cor_ss[0] + i*n_samp;
      for(Int_t j = 0 ; j < n_samp ; j++){
        fT3d2_cor_ss[n_samp*i+j] = &fT3d1_cor_ss[0]+n_samp*(n_samp*i+j);}}
  }
  
  //..................... calculation of the correlations (=init)
  //......................computation of half of the matrix, diagonal included (verif = 1)
    
 for (Int_t j0StexEcha = 0 ; j0StexEcha < fEcal->MaxCrysEcnaInStex() ; j0StexEcha++)
   {
     for (Int_t i0Sample = 0 ; i0Sample < fNbSampForCalc ; i0Sample++)
       {
         for (Int_t j0Sample = 0 ; j0Sample <= i0Sample ; j0Sample++)
           {
             if( (fT3d_cov_ss[j0StexEcha][i0Sample][i0Sample] > 0) &&
                 (fT3d_cov_ss[j0StexEcha][j0Sample][j0Sample] > 0) )
               {
                 fT3d_cor_ss[j0StexEcha][i0Sample][j0Sample] = fT3d_cov_ss[j0StexEcha][i0Sample][j0Sample]/
                   ( sqrt(fT3d_cov_ss[j0StexEcha][i0Sample][i0Sample])*sqrt(fT3d_cov_ss[j0StexEcha][j0Sample][j0Sample]) );
               }
             else
               {
                 (fT3d_cor_ss)[j0StexEcha][i0Sample][j0Sample] = (Double_t)0; // prevoir compteur + fTTBELL
               }
             fT3d_cor_ss[j0StexEcha][j0Sample][i0Sample] = fT3d_cor_ss[j0StexEcha][i0Sample][j0Sample];
           }
       }
     fTagCorCss[j0StexEcha] = 1;          fFileHeader->fCorCssCalc++;
   }
}
void TEcnaRun::CovariancesBetweenSamples ( )

Definition at line 1446 of file TEcnaRun.cc.

References gather_cfg::cout, fCnew, fCodePrintAllComments, fCodePrintNoComment, TEcnaHeader::fCovCssCalc, fEcal, fFileHeader, fFlagPrint, fNbSampForCalc, fNumberOfEvents, fT2d_ev, fT3d1_cov_ss, fT3d2_cov_ss, fT3d_AdcValues, fT3d_cov_ss, fTagCovCss, fTagMSp, i, j, TEcnaParEcal::MaxCrysEcnaInStex(), and SampleMeans().

Referenced by CorrelationsBetweenSamples().

{
  //Calculation of the covariances between samples for all the StexEchas
  
  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::CovariancesBetweenSamples()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation: covariances between samples"
         << " for each channel." << endl;}
  
  //................... Allocations cov_ss
  if( fT3d_cov_ss == 0 ){
    const Int_t n_samp = fNbSampForCalc;
    const Int_t n_StexEcha = fEcal->MaxCrysEcnaInStex();
    fT3d_cov_ss  = new Double_t**[n_StexEcha];                fCnew++;  
    fT3d2_cov_ss = new  Double_t*[n_StexEcha*n_samp];         fCnew++;  
    fT3d1_cov_ss = new   Double_t[n_StexEcha*n_samp*n_samp];  fCnew++;  
    for(Int_t i = 0 ; i < n_StexEcha ; i++){
      fT3d_cov_ss[i] = &fT3d2_cov_ss[0] + i*n_samp;
      for(Int_t j = 0 ; j < n_samp ; j++){
        fT3d2_cov_ss[n_samp*i+j] = &fT3d1_cov_ss[0]+n_samp*(n_samp*i+j);}}
  }
  
  //.................. Calculation (= init)
  //.................. computation of half of the matrix, diagonal included)

  //... preliminary calculation of the expectation values if not done yet.
  //    The tag is set to 1 after call to the method. It is reset to 0
  //    because the expectation values must not be written in the result ROOT file
  //    (since the tag was equal to 0)
  //    Results in array  fT2d_ev[j0StexEcha][i0Sample]
  if(fTagMSp[0] != 1){SampleMeans(); fTagMSp[0] = 0;}


  for (Int_t j0StexEcha = 0 ; j0StexEcha < fEcal->MaxCrysEcnaInStex() ; j0StexEcha++)
    {
      for (Int_t i0Sample = 0 ; i0Sample < fNbSampForCalc ; i0Sample++)
        {
          for (Int_t j0Sample = 0 ; j0Sample <= i0Sample; j0Sample++)
            {
              fT3d_cov_ss[j0StexEcha][i0Sample][j0Sample] = (Double_t)0;
              for( Int_t i_event = 0; i_event < fNumberOfEvents; i_event++ )
                {
                  fT3d_cov_ss[j0StexEcha][i0Sample][j0Sample] +=
                    (fT3d_AdcValues[j0StexEcha][i0Sample][i_event] - fT2d_ev[j0StexEcha][i0Sample])
                    *(fT3d_AdcValues[j0StexEcha][j0Sample][i_event] - fT2d_ev[j0StexEcha][j0Sample]);
                }
              fT3d_cov_ss[j0StexEcha][i0Sample][j0Sample] /= (Double_t)fNumberOfEvents;
              fT3d_cov_ss[j0StexEcha][j0Sample][i0Sample] = fT3d_cov_ss[j0StexEcha][i0Sample][j0Sample];
            }
        }
      fTagCovCss[j0StexEcha] = 1;     fFileHeader->fCovCssCalc++;
    }
}
void TEcnaRun::Expert1Calculations ( )
void TEcnaRun::Expert2Calculations ( )

Definition at line 1304 of file TEcnaRun.cc.

References HighFrequencyMeanCorrelationsBetweenStins(), and LowFrequencyMeanCorrelationsBetweenStins().

Referenced by TEcnaGui::Calculations().

{
  // long time, no big file
  // expert 1 is called (if not called before) without writing in file.
  // Results are used only in memory to compute expert2 calculations

  LowFrequencyMeanCorrelationsBetweenStins();
  HighFrequencyMeanCorrelationsBetweenStins();
}
TString TEcnaRun::GetNewRootFileName ( )

Definition at line 3100 of file TEcnaRun.cc.

References fNewRootFileName.

{return fNewRootFileName;}
TString TEcnaRun::GetNewRootFileNameShort ( )

Definition at line 3101 of file TEcnaRun.cc.

References fNewRootFileNameShort.

Referenced by TEcnaGui::Calculations().

Bool_t TEcnaRun::GetPathForResults ( )
void TEcnaRun::GetReadyToCompute ( )

Definition at line 1216 of file TEcnaRun.cc.

References gather_cfg::cout, fCnaWrite, fEcal, fFileHeader, TEcnaHeader::fFirstReqEvtNumber, TEcnaHeader::fLastReqEvtNumber, TEcnaWrite::fMakeResultsFileName(), TEcnaHeader::fNbOfSamples, fNbSampForFic, fNumberOfEvents, TEcnaHeader::fReqNbOfEvts, TEcnaHeader::fRunNumber, TEcnaHeader::fStex, fT2d_NbOfEvts, TEcnaHeader::fTypAna, TEcnaParEcal::MaxCrysEcnaInStex(), TEcnaWrite::NumberOfEventsAnalysis(), and TEcnaWrite::RegisterFileParameters().

Referenced by EcnaAnalyzer::analyze(), TEcnaGui::Calculations(), and EcnaAnalyzer::~EcnaAnalyzer().

{
//
  // MAKE THE RESULTS FILE NAME and
  // CHECK OF THE NUMBER OF FOUND EVENTS AND init fNumberOfEvents
  // (number used to compute the average values over the events)
  // The number of events fNumberOfEvents is extracted from the array fT2d_NbOfEvts[] 
  // which has been filled by the GetSampleAdcValues(...) method

  //..................... Making of the Root File name that will be written
  fCnaWrite->RegisterFileParameters(fFileHeader->fTypAna.Data(), fFileHeader->fNbOfSamples,
                                    fFileHeader->fRunNumber,
                                    fFileHeader->fFirstReqEvtNumber, fFileHeader->fLastReqEvtNumber,
                                    fFileHeader->fReqNbOfEvts,       fFileHeader->fStex);
  
  fCnaWrite->fMakeResultsFileName();  // set fRootFileName, fRootFileNameShort

  //..................... Checking numbers of found events channel by channel
  if( fT2d_NbOfEvts != 0 )
    {
      fNumberOfEvents = fCnaWrite->NumberOfEventsAnalysis(fT2d_NbOfEvts, fEcal->MaxCrysEcnaInStex(),
                                                          fNbSampForFic, fFileHeader->fReqNbOfEvts);
    }
  else
    {
      cout << "*TEcnaRun::GetReadyToCompute()> no data? fT2d_NbOfEvts = " << fT2d_NbOfEvts << endl;
    }
}  
void TEcnaRun::GetReadyToReadData ( TString  typ_ana,
const Int_t &  run_number,
const Int_t &  nfirst,
const Int_t &  nlast,
const Int_t &  nbevts,
const Int_t &  Stex 
)

Definition at line 504 of file TEcnaRun.cc.

Referenced by EcnaAnalyzer::analyze(), and TEcnaGui::Calculations().

{
//Preparation of the data reading. Set part of the header. No RunType as argument.
//Use default value = 99999999 and call method with all the arguments (see below)

  Int_t RunType = 99999999;
  GetReadyToReadData(typ_ana, run_number, nfirst, nlast, nbevts, Stex, RunType);
}
void TEcnaRun::GetReadyToReadData ( TString  typ_ana,
const Int_t &  run_number,
const Int_t &  nfirst,
const Int_t &  nlast,
const Int_t &  nbevts,
const Int_t &  Stex,
const Int_t &  run_type 
)

Definition at line 515 of file TEcnaRun.cc.

References dtNoiseDBValidation_cfg::cerr, gather_cfg::cout, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fFileHeader, TEcnaHeader::fFirstReqEvtNumber, fFlagPrint, TEcnaHeader::fLastReqEvtNumber, fMiscDiag, fNbOfMiscDiagCounters, fNbSampForFic, fObjectManager, fReadyToReadData, TEcnaHeader::fReqNbOfEvts, TEcnaHeader::fRunNumber, TEcnaHeader::fRunType, fSpecialStexStinNotIndexed, TEcnaHeader::fStex, fStexName, fStinName, fT1d_NbOfEvts, fT1d_StexStinFromIndex, fT2d_NbOfEvts, fT3d1_AdcValues, fT3d2_AdcValues, fT3d_AdcValues, fTagAdcEvt, fTagAvHfn, fTagAvLfn, fTagAvMeanCorss, fTagAvPed, fTagAvSigCorss, fTagAvTno, fTagCorCss, fTagCovCss, fTagHFccMoStins, fTagHfCor, fTagHfCov, fTagHfn, fTagLFccMoStins, fTagLfCor, fTagLfCov, fTagLfn, fTagMeanCorss, fTagMSp, fTagNbOfEvts, fTagPed, fTagSigCorss, fTagSSp, fTagStinNumbers, fTagTno, fTTBELL, TEcnaHeader::fTypAna, TEcnaHeader::HeaderParameters(), TEcnaParEcal::MaxCrysEcnaInStex(), TEcnaParEcal::MaxCrysInStin(), and TEcnaParEcal::MaxStinEcnaInStex().

{
//Preparation of the data reading. Set part of the header
//
//   [nfirst, nlast] = [1,50] (50 events) or [151,300] (150 events) or etc...

  Int_t nrangeevts = nlast - nfirst + 1;  // number of events in range

  if( nrangeevts < nbevts )
    {
      if( nlast >= nfirst )
        {
          cout << "*TEcnaRun::GetReadyToReadData(...)> --- WARNING ---> number of events = " << nbevts
               << ", out of range (range = " << nfirst << "," << nlast << ")" << endl
               << "                                    The number of found events will be less " << endl
               << "                                    than the number of requested events." << endl;
        }
      if( nlast < nfirst )
        {
          cout << "*TEcnaRun::GetReadyToReadData(...)> --- INFO ---> last requested event number = " << nlast
               << ", less than first requested event number (= " << nfirst << ")" << endl
               << "                                    File will be read until EOF if the number of found events" << endl
               << "                                    remains less than the number of requested events." << endl;
        }

    }
  
  //............. allocation for counters
  fMiscDiag = new Int_t[fNbOfMiscDiagCounters];       fCnew++;
  for (Int_t iz=0; iz<fNbOfMiscDiagCounters; iz++){fMiscDiag[iz] = (Int_t)0;}

  //************** CHECK OF ARGUMENTS: nfirst_arg and nbevts_arg
  Int_t nentries = 99999999;   // => to be reintroduced as argument (like run_type) (?)
  if ( nfirst <= nentries )
    {
      //--------------------- test positivity of nfirst_arg        (GetReadyToReadData)
      if ( nfirst > 0 )
        {
          //-------- test compatibility between the last requested event number
          //         and the number of entries
          if( nlast <= nentries )
            { 
              const Text_t *h_name  = "CnaHeader";   //==> voir cette question avec FXG
              const Text_t *h_title = "CnaHeader";   //==> voir cette question avec FXG
              //fFileHeader->HeaderParameters(h_name,     h_title ,
              //                              typ_ana,    fNbSampForFic,
              //                              run_number, nfirst,  nlast,  nbevts,
              //                              Stex,       nentries);                 fCnew++;

              if ( fEcal->MaxStinEcnaInStex() > 0  &&  fEcal->MaxCrysInStin() > 0  &&  fNbSampForFic > 0 ) 
                {
                  if( fFileHeader == 0 ){fFileHeader = new TEcnaHeader(fObjectManager, h_name, h_title);} // fCnew++;

                  fFileHeader->HeaderParameters(typ_ana,    fNbSampForFic,
                                                run_number, nfirst, nlast, nbevts,
                                                Stex,       run_type);

                  // After this call to TEcnaHeader, we have:               (GetReadyToReadData)
                  //     fFileHeader->fTypAna            = typ_ana
                  //     fFileHeader->fNbOfSamples       = fNbSampForFic
                  //     fFileHeader->fRunNumber         = run_number
                  //     fFileHeader->fFirstReqEvtNumber = nfirst
                  //     fFileHeader->fLastReqEvtNumber  = nlast
                  //     fFileHeader->fReqNbOfEvts       = nbevts
                  //     fFileHeader->fStex              = Stex number
                  //     fFileHeader->fRunType           = run_type
                  
                  // fFileHeader->Print();
                  
                  // {Int_t cintoto; cout << "taper 0 pour continuer" << endl; cin >> cintoto;}
                  
                  //  fFileHeader->SetName("CnaHeader");              *======> voir FXG
                  //  fFileHeader->SetTitle("CnaHeader");
                  
                  //......................................... allocation tags + init of them (GetReadyToReadData)
                  
                  fTagStinNumbers = new Int_t[1]; fCnew++; fTagStinNumbers[0] = (Int_t)0;
                  fTagNbOfEvts    = new Int_t[1]; fCnew++; fTagNbOfEvts[0]    = (Int_t)0;
                  
                  fTagAdcEvt      = new Int_t[fEcal->MaxCrysEcnaInStex()]; fCnew++;
                  for (Int_t iz=0; iz<fEcal->MaxCrysEcnaInStex(); iz++){fTagAdcEvt[iz] = (Int_t)0;}
                  
                  fTagMSp         = new Int_t[1]; fCnew++; fTagMSp[0] = (Int_t)0;
                  fTagSSp         = new Int_t[1]; fCnew++; fTagSSp[0] = (Int_t)0;
                  
                  fTagCovCss      = new Int_t[fEcal->MaxCrysEcnaInStex()]; fCnew++;
                  for (Int_t iz=0; iz<fEcal->MaxCrysEcnaInStex(); iz++){fTagCovCss[iz] = (Int_t)0;}
                  
                  fTagCorCss      = new Int_t[fEcal->MaxCrysEcnaInStex()]; fCnew++;
                  for (Int_t iz=0; iz<fEcal->MaxCrysEcnaInStex(); iz++){fTagCorCss[iz] = (Int_t)0;}
                  
                  fTagLfCov       = new Int_t[1]; fCnew++; fTagLfCov[0] = (Int_t)0;
                  fTagLfCor       = new Int_t[1]; fCnew++; fTagLfCor[0] = (Int_t)0;
                  
                  fTagHfCov       = new Int_t[1]; fCnew++; fTagHfCov[0] = (Int_t)0;
                  fTagHfCor       = new Int_t[1]; fCnew++; fTagHfCor[0] = (Int_t)0;
                  
                  fTagLFccMoStins = new Int_t[1]; fCnew++; fTagLFccMoStins[0] = (Int_t)0;
                  fTagHFccMoStins = new Int_t[1]; fCnew++; fTagHFccMoStins[0] = (Int_t)0;
                  
                  fTagPed         = new Int_t[1]; fCnew++; fTagPed[0]         = (Int_t)0;
                  fTagTno         = new Int_t[1]; fCnew++; fTagTno[0]         = (Int_t)0;
                  fTagMeanCorss   = new Int_t[1]; fCnew++; fTagMeanCorss[0]   = (Int_t)0; 
                  
                  fTagLfn         = new Int_t[1]; fCnew++; fTagLfn[0]         = (Int_t)0; 
                  fTagHfn         = new Int_t[1]; fCnew++; fTagHfn[0]         = (Int_t)0; 
                  fTagSigCorss    = new Int_t[1]; fCnew++; fTagSigCorss[0]    = (Int_t)0; 
                  
                  fTagAvPed       = new Int_t[1]; fCnew++; fTagAvPed[0]       = (Int_t)0; 
                  fTagAvTno       = new Int_t[1]; fCnew++; fTagAvTno[0]       = (Int_t)0; 
                  fTagAvLfn       = new Int_t[1]; fCnew++; fTagAvLfn[0]       = (Int_t)0; 
                  fTagAvHfn       = new Int_t[1]; fCnew++; fTagAvHfn[0]       = (Int_t)0; 
                  fTagAvMeanCorss = new Int_t[1]; fCnew++; fTagAvMeanCorss[0] = (Int_t)0; 
                  fTagAvSigCorss  = new Int_t[1]; fCnew++; fTagAvSigCorss[0]  = (Int_t)0; 
                  
                  //====================================================================================
                  //
                  //   allocation for fT1d_StexStinFromIndex[] and init to fSpecialStexStinNotIndexed
                  //
                  //====================================================================================
                  
                  if(fT1d_StexStinFromIndex == 0)
                    {
                      fT1d_StexStinFromIndex = new Int_t[fEcal->MaxStinEcnaInStex()];          fCnew++;
                    }
                  for ( Int_t i0_Stin = 0; i0_Stin < fEcal->MaxStinEcnaInStex(); i0_Stin++ )
                    {
                      fT1d_StexStinFromIndex[i0_Stin] = fSpecialStexStinNotIndexed;
                    }
                  
                  //-------------------------------------------------------------  (GetReadyToReadData)
          
                  //====================================================================================
                  //
                  //   allocation of the 3D array fT3d_AdcValues[channel][sample][events] (ADC values)
                  //
                  //   This array is filled in the GetSampleAdcValues(...) method
                  //
                  //====================================================================================
                  
                  if(fT3d_AdcValues == 0)
                    {
                      //............ Allocation for the 3d array 
                      cout << "*TEcnaRun::GetReadyToReadData(...)> Allocation of 3D array for ADC distributions."
                           << " Nb of requested evts = " << fFileHeader->fReqNbOfEvts << endl
                           << "                                    This number must not be too large"
                           << " (no failure after this message means alloc OK)." << endl;

                      fT3d_AdcValues = new Double_t**[fEcal->MaxCrysEcnaInStex()];        fCnew++;  

                      fT3d2_AdcValues  =
                        new  Double_t*[fEcal->MaxCrysEcnaInStex()*
                                       fNbSampForFic];                          fCnew++;  

                      fT3d1_AdcValues  =
                        new   Double_t[fEcal->MaxCrysEcnaInStex()*
                                       fNbSampForFic*
                                       fFileHeader->fReqNbOfEvts];                       fCnew++;

                      for(Int_t i0StexEcha=0; i0StexEcha<fEcal->MaxCrysEcnaInStex(); i0StexEcha++){
                        fT3d_AdcValues[i0StexEcha] = &fT3d2_AdcValues[0] + i0StexEcha*fNbSampForFic;
                        for(Int_t j0Sample=0; j0Sample<fNbSampForFic; j0Sample++){
                          fT3d2_AdcValues[fNbSampForFic*i0StexEcha + j0Sample] = &fT3d1_AdcValues[0]+
                            fFileHeader->fReqNbOfEvts*(fNbSampForFic*i0StexEcha+j0Sample);}}
                    }
                  //................................. Init to zero
                  for (Int_t iza=0; iza<fEcal->MaxCrysEcnaInStex(); iza++)
                    {
                      for (Int_t izb=0; izb<fNbSampForFic; izb++)
                        {
                          for (Int_t izc=0; izc<fFileHeader->fReqNbOfEvts; izc++)
                            {
                              if( fT3d_AdcValues[iza][izb][izc] != (Double_t)0 )
                                {
                                  fMiscDiag[0]++;
                                  fT3d_AdcValues[iza][izb][izc] = (Double_t)0;
                                }
                            }
                        }
                    }

                  //--------------------------------------------------------- (GetReadyToReadData)        
                  //====================================================================================
                  //
                  //   allocation of the 2D array fT2d_NbOfEvts[channel][sample] (Max nb of evts)
                  //
                  //====================================================================================
                  
                  if (fT2d_NbOfEvts == 0)
                    {
                      fT2d_NbOfEvts  = new Int_t*[fEcal->MaxCrysEcnaInStex()];           fCnew++;
                      fT1d_NbOfEvts  = new  Int_t[fEcal->MaxCrysEcnaInStex()*
                                                      fNbSampForFic];            fCnew++;
                      
                      for(Int_t i0StexEcha = 0 ; i0StexEcha < fEcal->MaxCrysEcnaInStex() ; i0StexEcha++)
                        {
                          fT2d_NbOfEvts[i0StexEcha] =
                            &fT1d_NbOfEvts[0] + i0StexEcha*fNbSampForFic;
                        }
                      
                      //................ Init the array to 0
                      for(Int_t i0StexEcha=0; i0StexEcha<fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
                        {
                          for(Int_t i0Sample=0; i0Sample<fNbSampForFic; i0Sample++)
                            {
                              fT2d_NbOfEvts[i0StexEcha][i0Sample] = 0;
                            }
                        }
                    }
                  else
                    {
                      cerr << "!TEcnaRun::GetReadyToReadData(...)> *** ERROR *** No allocation for fT2d_NbOfEvts!"
                           << " Pointer already not NULL " << fTTBELL << endl;
                      // {Int_t cintoto; cout << "Enter: 0 and RETURN to continue or: CTRL C to exit"
                      //                   << endl; cin >> cintoto;}
                    }
                }
              else
                {
                  cerr << endl
                       << "!TEcnaRun::GetReadyToReadData(...)> "
                       << " *** ERROR *** " << endl
                       << " --------------------------------------------------"
                       << endl
                       << " NULL or NEGATIVE values for arguments" << endl
                       << " with expected positive values:"        << endl
                       << " Number of Stins in Stex = " << fEcal->MaxStinEcnaInStex()  << endl
                       << " Number of crystals in Stin     = " << fEcal->MaxCrysInStin() << endl
                       << " Number of samples by channel    = " << fNbSampForFic << endl
                       << endl
                       << endl
                       << " hence, no memory allocation for array member has been performed." << endl;
                  
                  cout << "Enter: 0 and RETURN to continue or: CTRL C to exit";
                  Int_t toto;
                  cin >> toto;
                }
              //----------------------------------------------------------- (GetReadyToReadData)
              if(fFlagPrint == fCodePrintAllComments ){
                cout << endl;
                cout << "*TEcnaRun::GetReadyToReadData(...)>" << endl
                     << "          The method has been called with the following argument values:"  << endl
                     << "          Analysis name                = "
                     << fFileHeader->fTypAna << endl
                     << "          Run number                   = "
                     << fFileHeader->fRunNumber << endl
                     << "          Run type                     = "
                     << fFileHeader->fRunType << endl
                     << "          First requested event number = "
                     << fFileHeader->fFirstReqEvtNumber << endl
                     << "          Last requested event number  = "
                     << fFileHeader->fLastReqEvtNumber << endl
                     << "          " << fStexName.Data() << " number                  = "
                     << fFileHeader->fStex << endl
                     << "          Number of " << fStinName.Data()
                     << " in " << fStexName.Data() << "       = "
                     << fEcal->MaxStinEcnaInStex()  << endl
                     << "          Number of crystals in " << fStinName.Data() << "  = "
                     << fEcal->MaxCrysInStin()  << endl
                     << "          Number of samples by channel = "
                     << fNbSampForFic  << endl
                     << endl;}
              
              fReadyToReadData = 1;                        // set flag
            }
          else
            {
              if (fFlagPrint != fCodePrintNoComment){
                cout << "!TEcnaRun::GetReadyToReadData(...) > WARNING/CORRECTION:" << endl
                     << "! The fisrt requested event number is not positive (nfirst = " << nfirst << ") "
                     << fTTBELL << endl;}
            }
        }
      else
        {
          if (fFlagPrint != fCodePrintNoComment){
            cout << endl << "!TEcnaRun::GetReadyToReadData(...)> WARNING/CORRECTION:" << endl
                 << "! The number of requested events (nbevts = " << nbevts << ") is too large." << endl
                 << "! Last event number = " << nlast << " > number of entries = " << nentries << ". "
                 << fTTBELL << endl << endl;}
        }
    }
  else
    {
      cout << "!TEcnaRun::GetReadyToReadData(...) *** ERROR ***> "
           << " The first requested event number is greater than the number of entries."
           << fTTBELL << endl;
    }
  if(fFlagPrint == fCodePrintAllComments){
    cout << "*TEcnaRun::GetReadyToReadData(...)> Leaving the method. fReadyToReadData = "
         << fReadyToReadData << endl; }

} // end of GetReadyToReadData
TString TEcnaRun::GetRootFileName ( )

Definition at line 1182 of file TEcnaRun.cc.

References fRootFileName.

{return fRootFileName;}
TString TEcnaRun::GetRootFileNameShort ( )

Definition at line 1183 of file TEcnaRun.cc.

References fRootFileNameShort.

Referenced by TEcnaGui::Calculations().

Bool_t TEcnaRun::GetSampleAdcValues ( const Int_t &  n1EventNumber,
const Int_t &  n1StexStin,
const Int_t &  i0StinEcha,
const Int_t &  i0Sample,
const Double_t &  adcvalue 
)

Definition at line 835 of file TEcnaRun.cc.

References gather_cfg::cout, fBuildEvtNotSkipped, fCodePrintAllComments, fEcal, fEcalNumbering, fFileHeader, fFlagPrint, fFlagSubDet, TEcnaHeader::fNbOfEvtsCalc, fNbSampForFic, fReadyToReadData, TEcnaHeader::fReqNbOfEvts, fSpecialStexStinNotIndexed, TEcnaHeader::fStex, fStexName, fStinIndexBuilt, fStinName, TEcnaHeader::fStinNumbersCalc, fT1d_StexStinFromIndex, fT2d_NbOfEvts, fT3d_AdcValues, fTagNbOfEvts, fTagStinNumbers, fTTBELL, TEcnaParEcal::MaxCrysEcnaInStex(), TEcnaParEcal::MaxCrysInStin(), TEcnaParEcal::MaxSampADC(), and TEcnaParEcal::MaxStinEcnaInStex().

{
  //Building of the arrays fT1d_StexStinFromIndex[] and fT3d_AdcValues[][][]
  
  fBuildEvtNotSkipped++;      // event not skipped by cmsRun

  Bool_t ret_code = kFALSE;

  Int_t i0EventIndex   = n1EventNumber - 1;  // INDEX FOR Event number  
  Int_t i0StexStinEcna = n1StexStin - 1;     // INDEX FOR StexStin = Number_of_the_Stin_in_Stex - 1

  Int_t i_trouve = 0;
  //.................................................................. (GetSampleAdcValues)
  if(fReadyToReadData == 1)  
    {
      if( n1StexStin>= 1 && n1StexStin <= fEcal->MaxStinEcnaInStex() )
        {      
          if( i0StinEcha >= 0 && i0StinEcha < fEcal->MaxCrysInStin() )
            {
              if( i0Sample >= 0 && i0Sample < fEcal->MaxSampADC() )
                {
                  //..... Put the StexStin number in 1D array fT1d_StexStinFromIndex[] = Stin index + 1
                  if( fT1d_StexStinFromIndex != 0 )  // table fT1d_StexStinFromIndex[index] already allocated
                    {
                      ret_code = kTRUE;

                      // StexStin already indexed
                      if( n1StexStin == fT1d_StexStinFromIndex[i0StexStinEcna] ){i_trouve = 1;}
                  
                      // StexStin index not found: set index for new StexStin
                      if (i_trouve != 1 )
                        {
                          if( fT1d_StexStinFromIndex[i0StexStinEcna] == fSpecialStexStinNotIndexed )
                            {
                              fT1d_StexStinFromIndex[i0StexStinEcna] = n1StexStin;
                              fFileHeader->fStinNumbersCalc = 1;
                              fTagStinNumbers[0] = 1;
                              fStinIndexBuilt++;                      //  number of found Stins
                              
                              if(fFlagPrint == fCodePrintAllComments)
                                {
                                  if( fStinIndexBuilt == 1 )
                                    {
                                      cout << endl << "*TEcnaRun::GetSampleAdcValues(...)> event " << n1EventNumber
                                           << " : first event for " << fStexName.Data() << " " << fFileHeader->fStex
                                           << "; " << fStinName.Data() << "s : ";
                                    }
                                  if( fFlagSubDet == "EB" )
                                    {cout << fT1d_StexStinFromIndex[i0StexStinEcna] << ", ";}
                                  if( fFlagSubDet == "EE" )
                                    {cout << fEcalNumbering->
                                       GetDeeSCConsFrom1DeeSCEcna(fFileHeader->fStex, fT1d_StexStinFromIndex[i0StexStinEcna])
                                          << ", ";}
                                }
                              //.................................................... (GetSampleAdcValues)
                              if(fFlagPrint == fCodePrintAllComments)
                                {
                                  cout << " (" << fStinIndexBuilt << " " << fStinName.Data()
                                       << " found), channel " << i0StinEcha << ", i0Sample " << i0Sample << endl;
                                }
                              ret_code = kTRUE;
                            } // if ( fT1d_StexStinFromIndex[i0StexStinEcna] == fSpecialStexStinNotIndexed )
                          else
                            {
                              cout << "!TEcnaRun::GetSampleAdcValues(...)> *** ERROR ***> NOT ALLOWED if RESULT. " 
                                   << " n1StexStin = " << n1StexStin << ", fT1d_StexStinFromIndex["
                                   << i0StexStinEcna << "] = "
                                   << fT1d_StexStinFromIndex[i0StexStinEcna]
                                   << ", fStinIndexBuilt = " << fStinIndexBuilt
                                   << fTTBELL << endl;
                              ret_code = kFALSE;
                            }
                        }  //  if (i_trouve != 1 )

                    } //  if( fT1d_StexStinFromIndex != 0 ) 
                  else
                    {
                      cout << "!TEcnaRun, GetSampleAdcValues *** ERROR ***> "
                           << " fT1d_StexStinFromIndex = " << fT1d_StexStinFromIndex
                           << " fT1d_StexStinFromIndex[] ALLOCATION NOT DONE" << fTTBELL << endl;
                      ret_code = kFALSE;
                    } //.................................................................. (GetSampleAdcValues)
                } // end of if( i0Sample >= 0 && i0Sample < fNbSampForFic )
              else
                {
                  //.......Reading data => Message and error only if sample >= fEcal->MaxSampADC()
                  //       (not fNbSampForFic, the later is used only for calculations)
                  if( i0Sample >= fEcal->MaxSampADC() )
                    {
                      cout << "!TEcnaRun::GetSampleAdcValues(...) *** ERROR ***> "
                           << " sample number = " << i0Sample << ". OUT OF BOUNDS"
                           << " (max = " << fNbSampForFic << ")"
                           << fTTBELL << endl;
                      ret_code = kFALSE;
                    }
                  else
                    {
                      ret_code = kTRUE;
                    }
                }// else of if( i0Sample >= 0 && i0Sample < fNbSampForFic )
            } // end of if( i0StinEcha >= 0 && i0StinEcha < fEcal->MaxCrysInStin() )
          else
            {
              cout << "!TEcnaRun::GetSampleAdcValues(...) *** ERROR ***> "
                   << " channel number in " << fStinName.Data() << " = " << i0StinEcha << ". OUT OF BOUNDS"
                   << " (max = " << fEcal->MaxCrysInStin() << ")" 
                   << fTTBELL << endl;
              ret_code = kFALSE;
            } // else of if( i0StinEcha >= 0 && i0StinEcha < fEcal->MaxCrysInStin() )
        }
      else
        {
          cout << "!TEcnaRun::GetSampleAdcValues(...) *** ERROR ***> "
               << fStinName.Data() << " number in " << fStexName.Data() << " = " << n1StexStin << ". OUT OF BOUNDS"
               << " (max = " << fEcal->MaxStinEcnaInStex() << ")"
               << fTTBELL << endl;
          ret_code = kFALSE;
        }

      //.................................................................. (GetSampleAdcValues)
      //........ Filling of the 2D array of the event numbers in the data reading loop and 
      //         filling of the 3D array of the ADC sample values
      //
      //                           ONLY if ret_code == kTRUE

      if( ret_code == kTRUE )
        {
          //............ 1) Conversion (Stin,i0StinEcha) -> i0StexEcha  (same numbering for EB and EE)
          //==========================================================================================
          //   n1StexStin (Tower or SC):      1            2            3
          //   iStexStin                      0            1            2 
          //
          //   i0StinEcha:                 0......24    0......24    0......24
          //
          //   i0StexEcha         :        0......24   25......49   50......74  grouped by StexStin's
          //   i0StexEcha+1 (Xtal):        1......25   26......50   51......75       
          //
          //==========================================================================================

          Int_t i0StexEcha = i0StexStinEcna*fEcal->MaxCrysInStin() + i0StinEcha;
              
          //--------------------------------------------------------- (GetSampleAdcValues)
          if( i0StexEcha >= 0 && i0StexEcha < fEcal->MaxCrysEcnaInStex() )
            {
              //............ 2) Increase of the nb of evts for (StexEcha,sample) (events found in the data)
              (fT2d_NbOfEvts[i0StexEcha][i0Sample])++;     // value after first incrementation = 1
              fTagNbOfEvts[0] = 1;
              fFileHeader->fNbOfEvtsCalc = 1;
                  
              //............ 3) Filling of the 3D array of the ADC values
              if ( i0EventIndex >= 0 && i0EventIndex < fFileHeader->fReqNbOfEvts )
                {  
                  if( i0Sample >= 0 && i0Sample < fNbSampForFic )
                    {
                      fT3d_AdcValues[i0StexEcha][i0Sample][i0EventIndex] = adcvalue;
                    }
                  else
                    {
                      cout << "!TEcnaRun::GetSampleAdcValues(...) *** ERROR ***> "
                           << " sample index = " << i0Sample << ". OUT OF BOUNDS"
                           << " (max = " << fNbSampForFic << ")"
                           << fTTBELL << endl;
                    }
                }
              else
                {
                  cout << "!TEcnaRun::GetSampleAdcValues(...) *** ERROR ***> "
                       << " event number = " << n1EventNumber << ". OUT OF BOUNDS"
                       << " (max = " << fFileHeader->fReqNbOfEvts << ")"
                       << fTTBELL << endl;
                  ret_code = kFALSE;
                }
            }
          else
            {
              cout << "!TEcnaRun::GetSampleAdcValues(...) *** ERROR ***> "
                   << " CHANNEL NUMBER OUT OF BOUNDS" << endl
                   << " i0StexEcha number = " << i0StexEcha
                   << " , n1StexStin = " << n1StexStin
                   << " , i0StinEcha = " << i0StinEcha
                   << " , fEcal->MaxCrysEcnaInStex() = " << fEcal->MaxCrysEcnaInStex() 
                   << fTTBELL << endl; 
              ret_code = kFALSE;
              // {Int_t cintoto; cout << "TAPER 0 POUR CONTINUER" << endl; cin >> cintoto;}
            }
        } // end of if( ret_code == kTRUE )
      else
        {
          cout << "!TEcnaRun::GetSampleAdcValues(...) *** ERROR ***> ret_code = kFALSE "
               << fTTBELL << endl;
        }
    } // end of if(fReadyToReadData == 1)
  else
    {
      cout << "!TEcnaRun::GetSampleAdcValues(...) *** ERROR ***> GetReadyToReadData(...) not called."
           << fTTBELL << endl;
      ret_code = kFALSE;
    }
  //.................................................................. (GetSampleAdcValues)
  if (ret_code == kFALSE)
    {
      cout << "!TEcnaRun::GetSampleAdcValues(...)> *** ERROR ***> ret_code = " << ret_code
           << " (FALSE). Event: " << n1EventNumber
           << ", " << fStexName.Data() << ": " << fFileHeader->fStex
           << ", " << fStinName.Data() << ": " << n1StexStin
           << ", channel: " << i0StinEcha
           << ", Sample: "   << i0Sample
           << ", ADC value: " << adcvalue << endl;
    } 
  return ret_code;
}
void TEcnaRun::HighFrequencyCorrelationsBetweenChannels ( )

Definition at line 2637 of file TEcnaRun.cc.

References gather_cfg::cout, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fEcalNumbering, fFileHeader, fFlagPrint, fFlagSubDet, TEcnaHeader::fHfCorCalc, fMiscDiag, TEcnaHeader::fStex, fT2d1_hf_cor, fT2d_hf_cor, fT2d_hf_cov, fTagHfCor, fTagHfCov, HighFrequencyCovariancesBetweenChannels(), TEcnaParEcal::MaxCrysEcnaInStex(), mathSSE::sqrt(), and TEcnaNumbering::StexEchaForCons().

Referenced by Expert1Calculations(), and HighFrequencyMeanCorrelationsBetweenStins().

{
//Calculation of the High Frequency Correlations between channels

  //... preliminary calculation of the covariances if not done yet.
  if ( fTagHfCov[0] != 1 )
    {HighFrequencyCovariancesBetweenChannels(); fTagHfCov[0] = 0;}
  
  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::HighFrequencyCorrelationsBetweenChannels()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation of the High Frequency Correlations between channels" << endl
         << "          Starting allocation. "
         << endl;}

  //................. allocation fT2d_hf_cor + init to zero (mandatory)
  if( fT2d_hf_cor == 0 ){
    const Int_t n_StexEcha = fEcal->MaxCrysEcnaInStex();
    fT2d_hf_cor  = new Double_t*[n_StexEcha];                   fCnew++;
    fT2d1_hf_cor = new  Double_t[n_StexEcha*n_StexEcha];        fCnew++;
    for(Int_t i0StexEcha = 0 ; i0StexEcha < n_StexEcha ; i0StexEcha++){
        fT2d_hf_cor[i0StexEcha] = &fT2d1_hf_cor[0] + i0StexEcha*n_StexEcha;} 
  }

  for (Int_t i0StexEcha = 0 ; i0StexEcha < fEcal->MaxCrysEcnaInStex() ; i0StexEcha++)
    {
      for (Int_t j0StexEcha = 0 ; j0StexEcha < fEcal->MaxCrysEcnaInStex() ; j0StexEcha++)
        {
          if( fT2d_hf_cor[i0StexEcha][j0StexEcha] != (Double_t)0 )
            {fMiscDiag[24]++; fT2d_hf_cor[i0StexEcha][j0StexEcha] = (Double_t)0;}
        }
    }
  
  //................. calculation  
  //........................... computation of half of the matrix, diagonal included
  
  for (Int_t i0StexEcha = 0 ; i0StexEcha < fEcal->MaxCrysEcnaInStex() ; i0StexEcha++)
    {
      if( (fFlagSubDet == "EE" && fEcalNumbering->StexEchaForCons(fFileHeader->fStex, i0StexEcha) > 0)
          || ( fFlagSubDet == "EB") )
        {
          for (Int_t j0StexEcha = 0 ; j0StexEcha <= i0StexEcha ; j0StexEcha++)
            {
              if( (fFlagSubDet == "EE" && fEcalNumbering->StexEchaForCons(fFileHeader->fStex, j0StexEcha) > 0)
                  || ( fFlagSubDet == "EB") )
                {
                  if(  fT2d_hf_cov[i0StexEcha][i0StexEcha] > 0
                       && fT2d_hf_cov[j0StexEcha][j0StexEcha] > 0 )
                    {
                      fT2d_hf_cor[i0StexEcha][j0StexEcha] =
                        fT2d_hf_cov[i0StexEcha][j0StexEcha]/
                        (  (Double_t)sqrt(fT2d_hf_cov[i0StexEcha][i0StexEcha]) *
                           (Double_t)sqrt(fT2d_hf_cov[j0StexEcha][j0StexEcha])  );
                    }
                  else
                    {
                      fT2d_hf_cor[i0StexEcha][j0StexEcha] = (Double_t)0.;
                    }
                  
                  fT2d_hf_cor[j0StexEcha][i0StexEcha] = fT2d_hf_cor[i0StexEcha][j0StexEcha];
                }
            }
        }
      if( i0StexEcha%100 == 0 ){cout << i0StexEcha << "[HFN Cor], ";}
    }
  cout << endl;  
  
  fTagHfCor[0] = 1;    fFileHeader->fHfCorCalc++;
}
void TEcnaRun::HighFrequencyCovariancesBetweenChannels ( )

Definition at line 2520 of file TEcnaRun.cc.

References gather_cfg::cout, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fEcalNumbering, fFileHeader, fFlagPrint, fFlagSubDet, TEcnaHeader::fHfCovCalc, fMiscDiag, fNbSampForCalc, fNumberOfEvents, TEcnaHeader::fStex, fT2d1_hf_cov, fT2d_hf_cov, fT3d_AdcValues, fTagHfCov, TEcnaParEcal::MaxCrysEcnaInStex(), and TEcnaNumbering::StexEchaForCons().

Referenced by HighFrequencyCorrelationsBetweenChannels().

{
//Calculation of the High Frequency Covariances between channels
  
  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::HighFrequencyCovariancesBetweenChannels()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation of the High Frequency Covariances between channels" << endl;}

  //................. allocation fT2d_hf_cov + init to zero (mandatory)
  if( fT2d_hf_cov == 0 ){
    const Int_t n_StexEcha = fEcal->MaxCrysEcnaInStex();
    fT2d_hf_cov   = new Double_t*[n_StexEcha];                   fCnew++;
    fT2d1_hf_cov  = new  Double_t[n_StexEcha*n_StexEcha];        fCnew++;
    for(Int_t i0StexEcha = 0 ; i0StexEcha < n_StexEcha ; i0StexEcha++){
        fT2d_hf_cov[i0StexEcha] = &fT2d1_hf_cov[0] + i0StexEcha*n_StexEcha;} 
  }

  for (Int_t i0StexEcha = 0 ; i0StexEcha < fEcal->MaxCrysEcnaInStex() ; i0StexEcha++)
    {
      for (Int_t j0StexEcha = 0 ; j0StexEcha < fEcal->MaxCrysEcnaInStex() ; j0StexEcha++)
        {
          if( fT2d_hf_cov[i0StexEcha][j0StexEcha] != (Double_t)0 )
            {fMiscDiag[23]++; fT2d_hf_cov[i0StexEcha][j0StexEcha] = (Double_t)0;}
        }
    }

  //................... Allocation mean_over_samples(i0StexEcha, n_event) 
  TMatrixD mean_over_samples(fEcal->MaxCrysEcnaInStex(), fNumberOfEvents);
  for(Int_t i0StexEcha=0; i0StexEcha<fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {for(Int_t n_event=0; n_event<fNumberOfEvents; n_event++)
        {mean_over_samples(i0StexEcha, n_event)=(Double_t)0.;}}
  //................... Allocation cov_over_samp(i0StexEcha,j0StexEcha)
  TMatrixD cov_over_samp(fEcal->MaxCrysEcnaInStex(), fEcal->MaxCrysEcnaInStex());
  for(Int_t i0StexEcha=0; i0StexEcha<fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {for(Int_t j0StexEcha=0; j0StexEcha<fEcal->MaxCrysEcnaInStex(); j0StexEcha++)
        {cov_over_samp(i0StexEcha, j0StexEcha)=(Double_t)0.;}}

  //........................................... Calculation    (HighFrequencyCovariancesBetweenChannels)
  if(fFlagPrint != fCodePrintNoComment){
    cout << "          Calculation of the mean (over the events)" << endl
         << "          of the covariances between the channels (over the samples 1 to "
         <<  fNbSampForCalc << ")." << endl;}

  cout << " Please, wait (end at i= " << fEcal->MaxCrysEcnaInStex() << "): " << endl;

  for(Int_t i0StexEcha = 0; i0StexEcha < fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {
      if( (fFlagSubDet == "EE" && fEcalNumbering->StexEchaForCons(fFileHeader->fStex, i0StexEcha) > 0)
          || ( fFlagSubDet == "EB") )
        {
          for (Int_t n_event = 0; n_event < fNumberOfEvents; n_event++)
            {
              // Calculation, for each event, of the mean over the samples  ( = E_s[A(c_i,s*,e_n] )
              mean_over_samples(i0StexEcha, n_event) = (Double_t)0.;
              for(Int_t i0Sample=0; i0Sample<fNbSampForCalc; i0Sample++)
                {mean_over_samples(i0StexEcha, n_event) += fT3d_AdcValues[i0StexEcha][i0Sample][n_event];}
              mean_over_samples(i0StexEcha, n_event) /= (Double_t)fNbSampForCalc;
            }
        }
      if( i0StexEcha%100 == 0 ){cout << i0StexEcha << "[HFNa Cov], ";}
    }
  cout << endl;

  cout << " Please, wait (end at i= " << fEcal->MaxCrysEcnaInStex() << "): " << endl;

  //... Calculation of half of the matrix, diagonal included    (HighFrequencyCovariancesBetweenChannels)
  for(Int_t i0StexEcha = 0; i0StexEcha < fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {
      if( (fFlagSubDet == "EE" && fEcalNumbering->StexEchaForCons(fFileHeader->fStex, i0StexEcha) > 0)
          || ( fFlagSubDet == "EB") )
        {
          for(Int_t j0StexEcha = 0; j0StexEcha <= i0StexEcha; j0StexEcha++)
            {
              if( (fFlagSubDet == "EE" && fEcalNumbering->StexEchaForCons(fFileHeader->fStex, j0StexEcha) > 0)
                  || ( fFlagSubDet == "EB") )
                {
                  for (Int_t n_event = 0; n_event < fNumberOfEvents; n_event++)
                    {
                      // Calculation, for each event, of the covariance over the samples
                      cov_over_samp(i0StexEcha,j0StexEcha) = (Double_t)0;
                      for(Int_t i0Sample=0; i0Sample<fNbSampForCalc; i0Sample++)
                        {
                          cov_over_samp(i0StexEcha,j0StexEcha) +=
                            ( fT3d_AdcValues[i0StexEcha][i0Sample][n_event] - mean_over_samples(i0StexEcha, n_event) )*
                            ( fT3d_AdcValues[j0StexEcha][i0Sample][n_event] - mean_over_samples(j0StexEcha, n_event) );
                        }
                      cov_over_samp(i0StexEcha,j0StexEcha) /= (Double_t)fNbSampForCalc;

                    }
                  //....... Calculation of the mean over the events of Cov_s[A(c_i,s*,e*),A(c_j,s*,e*)]
                  //......... Calculation of half of the matrix, diagonal included
                  fT2d_hf_cov[i0StexEcha][j0StexEcha] = (Double_t)0;
                  for (Int_t n_event = 0; n_event < fNumberOfEvents; n_event++)
                    {
                      fT2d_hf_cov[i0StexEcha][j0StexEcha] += cov_over_samp(i0StexEcha,j0StexEcha);
                    }
                    fT2d_hf_cov[i0StexEcha][j0StexEcha] /= (Double_t)fNumberOfEvents;
                  
                  fT2d_hf_cov[j0StexEcha][i0StexEcha] = fT2d_hf_cov[i0StexEcha][j0StexEcha];
                }
            }
        }
      if( i0StexEcha%100 == 0 ){cout << i0StexEcha << "[HFNb Cov], ";}
    }
  cout << endl;

  fTagHfCov[0] = 1;    fFileHeader->fHfCovCalc++;
}
void TEcnaRun::HighFrequencyMeanCorrelationsBetweenSCs ( )
void TEcnaRun::HighFrequencyMeanCorrelationsBetweenStins ( )

Definition at line 2821 of file TEcnaRun.cc.

References gather_cfg::cout, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fFileHeader, fFlagPrint, fFlagSubDet, TEcnaHeader::fHFccMoStinsCalc, fMiscDiag, fT2d1_hfcc_mostins, fT2d_hf_cor, fT2d_hfcc_mostins, fTagHFccMoStins, fTagHfCor, fTTBELL, HighFrequencyCorrelationsBetweenChannels(), i, TEcnaParEcal::MaxCrysInStin(), and TEcnaParEcal::MaxStinEcnaInStex().

Referenced by Expert2Calculations(), HighFrequencyMeanCorrelationsBetweenSCs(), and HighFrequencyMeanCorrelationsBetweenTowers().

{
//Calculation of the mean High Frequency Correlations
//between channels for each Stin

  //... preliminary calculation of the High Frequency Cor(c,c) if not done yet
  //    Only one tag (dim=1) to set to 0 (no write in the result ROOT file)
  if(fTagHfCor[0] != 1){HighFrequencyCorrelationsBetweenChannels();fTagHfCor[0]=0;}

  //..... mean fT2d_hfcc_mostins for each pair (Stin_X,Stin_Y)
  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::HighFrequencyMeanCorrelationsBetweenStins()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation of the mean, for each "
         << fFlagSubDet.Data() << ", of the" << endl
         << "           High Frequency Correlations between channels." << endl;}

  //................. allocation fT2d_hfcc_mostins + init to zero (mandatory)
  if( fT2d_hfcc_mostins == 0 ){
    const Int_t n_Stin = fEcal->MaxStinEcnaInStex();
    fT2d_hfcc_mostins  = new Double_t*[n_Stin];                 fCnew++;
    fT2d1_hfcc_mostins = new  Double_t[n_Stin*n_Stin];           fCnew++;  
    for(Int_t i0StexStinEcna = 0 ; i0StexStinEcna < n_Stin ; i0StexStinEcna++){
        fT2d_hfcc_mostins[i0StexStinEcna] = &fT2d1_hfcc_mostins[0] + i0StexStinEcna*n_Stin;} 
  }
  
  for(Int_t i0StexStinEcna=0; i0StexStinEcna<fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
    {
      for(Int_t j0StexStinEcna=0; j0StexStinEcna<fEcal->MaxStinEcnaInStex(); j0StexStinEcna++)
        {
          if( fT2d_hfcc_mostins[i0StexStinEcna][j0StexStinEcna] != (Double_t)0 )
            {fMiscDiag[32]++; fT2d_hfcc_mostins[i0StexStinEcna][j0StexStinEcna] = (Double_t)0;}
        }
    }

  //..... Calculation of the mean HF Cor(c,c) for each pair (Stin_X,Stin_Y)
  //
  //           ! => Warning: this matrix is NOT symmetric => take N*N elements
  //                Only (Stin,Stin) matrix is symmetric.
  //                (StinEcha,StinEcha) matrix inside a (Stin,Stin) element is NOT symmetric
  //                (except for the (Stin,Stin) DIAGONAL elements)
  //      Then:
  //            1D array half_LFccMos[N*N] to put the (channel,channel) correlations

  Int_t ndim = (Int_t)(fEcal->MaxCrysInStin()*fEcal->MaxCrysInStin());

  TVectorD half_HFccMos(ndim); for(Int_t i=0; i<ndim; i++){half_HFccMos(i)=(Double_t)0.;}

  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::HighFrequencyMeanCorrelationsBetweenStins()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation, for each "
         << fFlagSubDet.Data()  << ", of the mean " << endl
         << "           High Frequency cor(c,c)." << endl;}

  //..................... Calculation
  for(Int_t i0StexStinEcna=0; i0StexStinEcna<fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
    {
      for(Int_t j0StexStinEcna=0; j0StexStinEcna<fEcal->MaxStinEcnaInStex(); j0StexStinEcna++)
        {
          //.................... Copy the relevant Mean Correlations(c,c') in 1D vector half_HFccMos()
          Int_t i_count = 0;
          for(Int_t i0StinCrys=0; i0StinCrys<fEcal->MaxCrysInStin(); i0StinCrys++)
            {
              Int_t i0StexEcha = i0StexStinEcna*fEcal->MaxCrysInStin() + i0StinCrys;
              for(Int_t j0StinCrys=0; j0StinCrys<fEcal->MaxCrysInStin(); j0StinCrys++)
                {
                  Int_t j0StexEcha = j0StexStinEcna*fEcal->MaxCrysInStin() + j0StinCrys;
                  if(  (i0StexEcha>= 0 && i0StexEcha < fEcal->MaxCrysEcnaInStex()) &&
                       (j0StexEcha>= 0 && j0StexEcha < fEcal->MaxCrysEcnaInStex())  )
                    {half_HFccMos(i_count) = fT2d_hf_cor[i0StexEcha][j0StexEcha]; i_count++;}
                  else
                    {cout << "!TEcnaRun::HighFrequencyMeanCorrelationsBetweenStins()> Channel number out of range."
                          << "i0StexEcha = " << i0StexEcha <<", j0StexEcha = " << j0StexEcha << fTTBELL << endl; }
                }
            }
          //..... Calculation of the mean absolute values of the HF mean Correlations(c,c')
          fT2d_hfcc_mostins[i0StexStinEcna][j0StexStinEcna] = (Double_t)0;
          for(Int_t i_rcor = 0; i_rcor < ndim; i_rcor++)
            {
              fT2d_hfcc_mostins[i0StexStinEcna][j0StexStinEcna] += fabs(half_HFccMos(i_rcor));
            }
          fT2d_hfcc_mostins[i0StexStinEcna][j0StexStinEcna] /= (Double_t)ndim;
        }
      if( i0StexStinEcna%10 == 0 ){cout << i0StexStinEcna << "[HFN MCtt], ";}
    }
  cout << endl;

  fTagHFccMoStins[0] = 1;                   fFileHeader->fHFccMoStinsCalc++;
} // ------- end of HighFrequencyMeanCorrelationsBetweenStins() -------
void TEcnaRun::HighFrequencyMeanCorrelationsBetweenTowers ( )
void TEcnaRun::HighFrequencyNoise ( )

Definition at line 1748 of file TEcnaRun.cc.

References gather_cfg::cout, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fFileHeader, fFlagPrint, TEcnaHeader::fHfnCalc, fMiscDiag, fNbSampForCalc, fNumberOfEvents, fT1d_evevt_of_sigsamp, fT3d_AdcValues, fTagHfn, fTTBELL, i, TEcnaParEcal::MaxCrysEcnaInStex(), and mathSSE::sqrt().

Referenced by AverageHighFrequencyNoise(), and StandardCalculations().

{
// Calculation, for each channel, of the mean (over the events)
// of the ADC sigmas (over the samples 0 to fNbSampForCalc-1)

  //................... Allocation fT1d_evevt_of_sigsamp + init to zero (mandatory)
  if( fT1d_evevt_of_sigsamp == 0 ){
    fT1d_evevt_of_sigsamp = new Double_t[fEcal->MaxCrysEcnaInStex()];              fCnew++;  
  }
  for(Int_t i0StexEcha=0; i0StexEcha<fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {
      if( fT1d_evevt_of_sigsamp[i0StexEcha] != (Double_t)0 )
        {fMiscDiag[14]++; fT1d_evevt_of_sigsamp[i0StexEcha] = (Double_t)0;}
    }

  //................... Allocations mean_over_samples, sigma_over_sample
  TVectorD  mean_over_samples(fNumberOfEvents);
  for(Int_t i=0; i<fNumberOfEvents; i++){mean_over_samples(i)=(Double_t)0.;} 
  TVectorD  sigma_over_samples(fNumberOfEvents);
  for(Int_t i=0; i<fNumberOfEvents; i++){sigma_over_samples(i)=(Double_t)0.;}

  //..................... Calculation
  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::HighFrequencyNoise()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation, for each channel, of the sigma (over the events)" << endl
         << "           of the ADC expectation values (over the samples 1 to "
         <<  fNbSampForCalc << ")." << endl;}

  for(Int_t i0StexEcha = 0; i0StexEcha < fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {
      //..................... Calculation of the sigma over samples
      for (Int_t n_event = 0; n_event < fNumberOfEvents; n_event++)
        {
          // Calculation, for each event, of the mean over the samples  
          mean_over_samples(n_event) = (Double_t)0.;
          for(Int_t i0Sample=0; i0Sample<fNbSampForCalc; i0Sample++)
            {mean_over_samples(n_event) += fT3d_AdcValues[i0StexEcha][i0Sample][n_event];}
          mean_over_samples(n_event) /= (Double_t)fNbSampForCalc;
          
          // Calculation, for each event, of the sigma over the samples
          Double_t var_over_samples =  (Double_t)0;
          for(Int_t i0Sample=0; i0Sample<fNbSampForCalc; i0Sample++)
            {Double_t deviation = fT3d_AdcValues[i0StexEcha][i0Sample][n_event] - mean_over_samples(n_event);
            var_over_samples += deviation*deviation;}
          var_over_samples /= (Double_t)fNbSampForCalc;
          
          if( var_over_samples < 0)
            {cout << "!TEcnaRun::HighFrequencyNoise() *** ERROR ***> Negative variance! " << fTTBELL << endl;}
          else
            {sigma_over_samples(n_event) = sqrt(var_over_samples);}
        }

      //....... Calculation of the mean over the events of the sigma over samples
      for (Int_t n_event = 0; n_event < fNumberOfEvents; n_event++)
        {fT1d_evevt_of_sigsamp[i0StexEcha] += sigma_over_samples(n_event);}

      fT1d_evevt_of_sigsamp[i0StexEcha] /= (Double_t)fNumberOfEvents;
    }
  fTagHfn[0] = 1;                      fFileHeader->fHfnCalc++;
}
void TEcnaRun::Init ( void  )

Definition at line 135 of file TEcnaRun.cc.

References fBuildEvtNotSkipped, fCdelete, fCnaCommand, fCnaError, fCnaParCout, fCnew, fCodePrintAllComments, fCodePrintComments, fCodePrintNoComment, fCodePrintWarnings, fFlagPrint, fgMaxCar, fMaxMsgIndexForMiscDiag, fMemoReadNumberOfEventsforSamples, fMiscDiag, fNbOfMiscDiagCounters, fNumberOfEvents, fOpenRootFile, fReadyToReadData, fSpecialStexStinNotIndexed, fStinIndexBuilt, fT1d_av_ev_corss, fT1d_av_hifn, fT1d_av_lofn, fT1d_av_mped, fT1d_av_sig_corss, fT1d_av_totn, fT1d_ev, fT1d_ev_cor_ss, fT1d_ev_ev, fT1d_evevt_of_sigsamp, fT1d_evsamp_of_sigevt, fT1d_NbOfEvts, fT1d_sig, fT1d_sig_cor_ss, fT1d_sigevt_of_evsamp, fT1d_StexStinFromIndex, fT1dCrysNumbersTable, fT2d1_hf_cor, fT2d1_hf_cov, fT2d1_hfcc_mostins, fT2d1_lf_cor, fT2d1_lf_cov, fT2d1_lfcc_mostins, fT2d_ev, fT2d_hf_cor, fT2d_hf_cov, fT2d_hfcc_mostins, fT2d_lf_cor, fT2d_lf_cov, fT2d_lfcc_mostins, fT2d_NbOfEvts, fT2d_sig, fT2dCrysNumbersTable, fT3d1_AdcValues, fT3d1_cor_ss, fT3d1_cov_ss, fT3d2_AdcValues, fT3d2_cor_ss, fT3d2_cov_ss, fT3d_AdcValues, fT3d_cor_ss, fT3d_cov_ss, fTagAdcEvt, fTagAvHfn, fTagAvLfn, fTagAvMeanCorss, fTagAvPed, fTagAvSigCorss, fTagAvTno, fTagCorCss, fTagCovCss, fTagHFccMoStins, fTagHfCor, fTagHfCov, fTagHfn, fTagLFccMoStins, fTagLfCor, fTagLfCov, fTagLfn, fTagMeanCorss, fTagMSp, fTagNbOfEvts, fTagPed, fTagSigCorss, fTagSSp, fTagStinNumbers, fTagTno, fTTBELL, gCnaRootFile, and TEcnaParCout::GetCodePrint().

Referenced by TEcnaRun().

{
//Initialisation

  fCnew       = 0;
  fCdelete    = 0;
  fCnaCommand = 0;
  fCnaError   = 0;

  fTTBELL = '\007';

  //........................... TString file names init
  fgMaxCar  = (Int_t)512;

  //................ MiscDiag counters .................
  fMaxMsgIndexForMiscDiag = (Int_t)10;
  fNbOfMiscDiagCounters   = (Int_t)50;
  fMiscDiag = 0;

  fNumberOfEvents = 0;
  //............................. init pointers  ( Init() )
  fT3d_AdcValues  = 0;
  fT3d2_AdcValues = 0;
  fT3d1_AdcValues = 0;

  fT1d_StexStinFromIndex = 0;

  fT2d_NbOfEvts = 0;
  fT1d_NbOfEvts = 0; 

  fT2d_ev        = 0;
  fT1d_ev        = 0;
  fT2d_sig       = 0;
  fT1d_sig       = 0;

  fT3d_cov_ss    = 0;
  fT3d2_cov_ss   = 0;
  fT3d1_cov_ss   = 0;

  fT3d_cor_ss    = 0;
  fT3d2_cor_ss   = 0;
  fT3d1_cor_ss   = 0;

  fT2d_lf_cov  = 0;
  fT2d1_lf_cov = 0;

  fT2d_lf_cor  = 0;
  fT2d1_lf_cor = 0;

  fT2d_hf_cov  = 0;
  fT2d1_hf_cov = 0;

  fT2d_hf_cor  = 0;
  fT2d1_hf_cor = 0;

  fT2d_lfcc_mostins  = 0;
  fT2d1_lfcc_mostins = 0;

  fT2d_hfcc_mostins  = 0;
  fT2d1_hfcc_mostins = 0;

  fT1d_ev_ev            = 0;
  fT1d_evsamp_of_sigevt = 0;
  fT1d_ev_cor_ss        = 0;
  fT1d_av_mped          = 0;
  fT1d_av_totn          = 0;
  fT1d_av_lofn          = 0;
  fT1d_av_hifn          = 0;
  fT1d_av_ev_corss      = 0;
  fT1d_av_sig_corss     = 0;

  fT1d_sigevt_of_evsamp = 0;
  fT1d_evevt_of_sigsamp = 0;
  fT1d_sig_cor_ss       = 0;

  fT2dCrysNumbersTable = 0;
  fT1dCrysNumbersTable = 0;

  //................................ tags   ( Init() )
  fTagStinNumbers = 0;

  fTagNbOfEvts = 0;

  fTagAdcEvt = 0;

  fTagMSp    = 0;
  fTagSSp    = 0;

  fTagCovCss = 0;
  fTagCorCss = 0;

  fTagHfCov  = 0;
  fTagHfCor  = 0;
  fTagLfCov  = 0;
  fTagLfCor  = 0;

  fTagLFccMoStins = 0;
  fTagHFccMoStins = 0;

  fTagPed = 0;
  fTagTno = 0;
  fTagMeanCorss = 0;

  fTagLfn = 0;
  fTagHfn = 0;
  fTagSigCorss = 0;

  fTagAvPed = 0;
  fTagAvTno = 0;
  fTagAvLfn = 0;
  fTagAvHfn = 0;

  fTagAvMeanCorss = 0;
  fTagAvSigCorss  = 0;

  //................................................... Code Print  ( Init() )
  fCodePrintNoComment   = fCnaParCout->GetCodePrint("NoComment");
  fCodePrintWarnings    = fCnaParCout->GetCodePrint("Warnings ");      // => default value
  fCodePrintComments    = fCnaParCout->GetCodePrint("Comments");
  fCodePrintAllComments = fCnaParCout->GetCodePrint("AllComments");

  fFlagPrint = fCodePrintWarnings;

  //...................................................
  gCnaRootFile = 0;
  fOpenRootFile = kFALSE;
  fReadyToReadData = 0;

  //.............................................. Miscellaneous
  fSpecialStexStinNotIndexed = -1;

  fStinIndexBuilt     = 0;
  fBuildEvtNotSkipped = 0;

  fMemoReadNumberOfEventsforSamples = 0;

}// end of Init()
void TEcnaRun::LowFrequencyCorrelationsBetweenChannels ( )

Definition at line 2437 of file TEcnaRun.cc.

References gather_cfg::cout, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fEcalNumbering, fFileHeader, fFlagPrint, fFlagSubDet, TEcnaHeader::fLfCorCalc, fMiscDiag, TEcnaHeader::fStex, fT2d1_lf_cor, fT2d_lf_cor, fT2d_lf_cov, fTagLfCor, fTagLfCov, LowFrequencyCovariancesBetweenChannels(), TEcnaParEcal::MaxCrysEcnaInStex(), mathSSE::sqrt(), and TEcnaNumbering::StexEchaForCons().

Referenced by Expert1Calculations(), and LowFrequencyMeanCorrelationsBetweenStins().

{
//Calculation of the Low Frequency Correlations between channels

  //... preliminary calculation of the covariances if not done yet.
  if ( fTagLfCov[0] != 1 )
    {LowFrequencyCovariancesBetweenChannels(); fTagLfCov[0] = 0;}
  
  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::LowFrequencyCorrelationsBetweenChannels()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "          Calculation of the Low Frequency Correlations between channels" << endl
         << "          Starting allocation. "
         << endl;}

  //................. allocation fT2d_lf_cor + init to zero (mandatory)
  if( fT2d_lf_cor == 0 ){
    const Int_t n_StexEcha = fEcal->MaxCrysEcnaInStex();
    fT2d_lf_cor  = new Double_t*[n_StexEcha];                   fCnew++;
    fT2d1_lf_cor = new  Double_t[n_StexEcha*n_StexEcha];        fCnew++;
    for(Int_t i0StexEcha = 0 ; i0StexEcha < n_StexEcha ; i0StexEcha++){
        fT2d_lf_cor[i0StexEcha] = &fT2d1_lf_cor[0] + i0StexEcha*n_StexEcha;} 
  }
  
  for (Int_t i0StexEcha = 0 ; i0StexEcha < fEcal->MaxCrysEcnaInStex() ; i0StexEcha++)
    {
      for (Int_t j0StexEcha = 0 ; j0StexEcha < fEcal->MaxCrysEcnaInStex() ; j0StexEcha++)
        {
          if( fT2d_lf_cor[i0StexEcha][j0StexEcha] != (Double_t)0 )
            {fMiscDiag[22]++; fT2d_lf_cor[i0StexEcha][j0StexEcha] = (Double_t)0;}
        }
    }
  
  //................. calculation  
  //........................... computation of half of the matrix, diagonal included
  for (Int_t i0StexEcha = 0 ; i0StexEcha < fEcal->MaxCrysEcnaInStex() ; i0StexEcha++)
    {
      if( (fFlagSubDet == "EE" && fEcalNumbering->StexEchaForCons(fFileHeader->fStex, i0StexEcha) > 0)
          || ( fFlagSubDet == "EB") )
        {
          for (Int_t j0StexEcha = 0 ; j0StexEcha <= i0StexEcha ; j0StexEcha++)
            {
              if( (fFlagSubDet == "EE" && fEcalNumbering->StexEchaForCons(fFileHeader->fStex, j0StexEcha) > 0)
                  || ( fFlagSubDet == "EB") )
                {
                  if(  fT2d_lf_cov[i0StexEcha][i0StexEcha] > 0
                       && fT2d_lf_cov[j0StexEcha][j0StexEcha] > 0 )
                    {
                      fT2d_lf_cor[i0StexEcha][j0StexEcha] =
                        fT2d_lf_cov[i0StexEcha][j0StexEcha]/
                        ( (Double_t)sqrt( fT2d_lf_cov[i0StexEcha][i0StexEcha]*
                                          fT2d_lf_cov[j0StexEcha][j0StexEcha] ) );
                    }
                  else
                    {
                      fT2d_lf_cor[i0StexEcha][j0StexEcha] = (Double_t)0.;
                    }
                  fT2d_lf_cor[j0StexEcha][i0StexEcha] = fT2d_lf_cor[i0StexEcha][j0StexEcha];
                }
            }
        }
      if( i0StexEcha%100 == 0 ){cout << i0StexEcha << "[LFN Cor], ";}
    }
  cout << endl;
  
  fTagLfCor[0] = 1;    fFileHeader->fLfCorCalc++;
}
void TEcnaRun::LowFrequencyCovariancesBetweenChannels ( )

Definition at line 2332 of file TEcnaRun.cc.

References gather_cfg::cout, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fEcalNumbering, fFileHeader, fFlagPrint, fFlagSubDet, TEcnaHeader::fLfCovCalc, fMiscDiag, fNbSampForCalc, fNumberOfEvents, TEcnaHeader::fStex, fT2d1_lf_cov, fT2d_lf_cov, fT3d_AdcValues, fTagLfCov, TEcnaParEcal::MaxCrysEcnaInStex(), and TEcnaNumbering::StexEchaForCons().

Referenced by LowFrequencyCorrelationsBetweenChannels().

{
//Calculation of the Low Frequency Covariances between channels
  
  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::LowFrequencyCovariancesBetweenChannels()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation of the Low Frequency Covariances between channels" << endl;}

  //................. allocation fT2d_lf_cov + init to zero (mandatory)
  if( fT2d_lf_cov == 0 ){
    const Int_t n_StexEcha = fEcal->MaxCrysEcnaInStex();
    fT2d_lf_cov  = new Double_t*[n_StexEcha];                   fCnew++;
    fT2d1_lf_cov = new  Double_t[n_StexEcha*n_StexEcha];          fCnew++;
    for(Int_t i0StexEcha = 0 ; i0StexEcha < n_StexEcha ; i0StexEcha++){
        fT2d_lf_cov[i0StexEcha] = &fT2d1_lf_cov[0] + i0StexEcha*n_StexEcha;}}

  for (Int_t i0StexEcha = 0 ; i0StexEcha < fEcal->MaxCrysEcnaInStex() ; i0StexEcha++)
    {
      for (Int_t j0StexEcha = 0 ; j0StexEcha < fEcal->MaxCrysEcnaInStex() ; j0StexEcha++)
        {
          if( fT2d_lf_cov[i0StexEcha][j0StexEcha] != (Double_t)0 )
            {fMiscDiag[21]++; fT2d_lf_cov[i0StexEcha][j0StexEcha] = (Double_t)0;}
        }
    }
  //........................................... Calculation  (LowFrequencyCovariancesBetweenChannels)
  //................... Allocation mean_over_samples(i0StexEcha, n_event)
  TMatrixD mean_over_samples(fEcal->MaxCrysEcnaInStex(), fNumberOfEvents);
  for(Int_t i0StexEcha=0; i0StexEcha<fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {for(Int_t n_event=0; n_event<fNumberOfEvents; n_event++)
        {mean_over_samples(i0StexEcha, n_event)=(Double_t)0.;}}
  //................... Allocation MoeOfMos(i0StexEcha)
  TVectorD MoeOfMos(fEcal->MaxCrysEcnaInStex());
  for(Int_t i0StexEcha=0; i0StexEcha<fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    { MoeOfMos(i0StexEcha)=(Double_t)0.;}

  //................... Calculation  
  if(fFlagPrint != fCodePrintNoComment){
    cout << "          Calculation, for each pair of channels, of the covariance (over the events)" << endl
         << "          between the ADC expectation values (over the samples 1 to "
         <<  fNbSampForCalc << ")." << endl;}

  cout << " Please, wait (end at i= " << fEcal->MaxCrysEcnaInStex() << "): " << endl;

  for(Int_t i0StexEcha = 0; i0StexEcha < fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {
      MoeOfMos(i0StexEcha) = (Double_t)0;

      if( (fFlagSubDet == "EE" && fEcalNumbering->StexEchaForCons(fFileHeader->fStex, i0StexEcha) > 0)
          || ( fFlagSubDet == "EB") )
        {
          for (Int_t n_event = 0; n_event < fNumberOfEvents; n_event++)
            {
              // Calculation, for each event, of the mean over the samples  ( = E_s[A(c_i,s*,e_n] )
              mean_over_samples(i0StexEcha, n_event) = (Double_t)0.;
              for(Int_t i0Sample=0; i0Sample<fNbSampForCalc; i0Sample++)
                {
                  mean_over_samples(i0StexEcha, n_event) += fT3d_AdcValues[i0StexEcha][i0Sample][n_event];
                }
              mean_over_samples(i0StexEcha, n_event) /= (Double_t)fNbSampForCalc;
            }
          //Calculation of the mean over the events of E_s[A(c_i,s*,e_n] ( = E_e[E_s[A(c_i,s*,e*]] )
          for (Int_t n_event = 0; n_event < fNumberOfEvents; n_event++)
            {MoeOfMos(i0StexEcha) += mean_over_samples(i0StexEcha, n_event);}
          MoeOfMos(i0StexEcha) /= (Double_t)fNumberOfEvents;
        }
    }

  //... Calculation of half of the matrix, diagonal included        (LowFrequencyCovariancesBetweenChannels)
  for(Int_t i0StexEcha = 0; i0StexEcha < fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {
      if( (fFlagSubDet == "EE" && fEcalNumbering->StexEchaForCons(fFileHeader->fStex, i0StexEcha) > 0)
          || ( fFlagSubDet == "EB") )
        {
          for(Int_t j0StexEcha = 0; j0StexEcha <= i0StexEcha; j0StexEcha++)
            {
              if( (fFlagSubDet == "EE" && fEcalNumbering->StexEchaForCons(fFileHeader->fStex, j0StexEcha) > 0)
                  || ( fFlagSubDet == "EB") )
                {
                  fT2d_lf_cov[i0StexEcha][j0StexEcha] = (Double_t)0;
                  for (Int_t n_event = 0; n_event < fNumberOfEvents; n_event++)
                    {
                      fT2d_lf_cov[i0StexEcha][j0StexEcha] +=
                        ( mean_over_samples(i0StexEcha, n_event) - MoeOfMos(i0StexEcha) )
                        *( mean_over_samples(j0StexEcha, n_event) - MoeOfMos(j0StexEcha) );    
                    }
                  fT2d_lf_cov[i0StexEcha][j0StexEcha] /= (Double_t)fNumberOfEvents;
                  
                  fT2d_lf_cov[j0StexEcha][i0StexEcha] = fT2d_lf_cov[i0StexEcha][j0StexEcha];
                }
            }
          if( i0StexEcha%100 == 0 ){cout << i0StexEcha << "[LFN Cov], ";}
        }
    }
  cout << endl;
  fTagLfCov[0] = 1;    fFileHeader->fLfCovCalc++;
}
void TEcnaRun::LowFrequencyMeanCorrelationsBetweenSCs ( )
void TEcnaRun::LowFrequencyMeanCorrelationsBetweenStins ( )

Definition at line 2723 of file TEcnaRun.cc.

References gather_cfg::cout, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fFileHeader, fFlagPrint, TEcnaHeader::fLFccMoStinsCalc, fMiscDiag, fStinName, fT2d1_lfcc_mostins, fT2d_lf_cor, fT2d_lfcc_mostins, fTagLFccMoStins, fTagLfCor, fTTBELL, i, LowFrequencyCorrelationsBetweenChannels(), TEcnaParEcal::MaxCrysInStin(), and TEcnaParEcal::MaxStinEcnaInStex().

Referenced by Expert2Calculations(), LowFrequencyMeanCorrelationsBetweenSCs(), and LowFrequencyMeanCorrelationsBetweenTowers().

{
//Calculation of the mean Low Frequency Correlations
//between channels for each Stin

  //... preliminary calculation of the Low Frequency Cor(c,c) if not done yet
  //    Only one tag (dim=1) to set to 0 (no write in the result ROOT file)
  if(fTagLfCor[0] != 1){LowFrequencyCorrelationsBetweenChannels(); fTagLfCor[0]=0;}

  //..... mean fT2d_lfcc_mostins for each pair (Stin_X,Stin_Y)
  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::LowFrequencyMeanCorrelationsBetweenStins()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation of the mean, for each "
         << fStinName.Data() << ", of the" << endl
         << "           Low Frequency Correlations between channels." << endl;}
  
  //................. allocation fT2d_lfcc_mostins + init to zero (mandatory)
  if( fT2d_lfcc_mostins == 0 ){
    const Int_t n_Stin = fEcal->MaxStinEcnaInStex();
    fT2d_lfcc_mostins  = new Double_t*[n_Stin];                 fCnew++;
    fT2d1_lfcc_mostins = new  Double_t[n_Stin*n_Stin];          fCnew++;  
    for(Int_t i0StexStinEcna = 0 ; i0StexStinEcna < n_Stin ; i0StexStinEcna++){
        fT2d_lfcc_mostins[i0StexStinEcna] = &fT2d1_lfcc_mostins[0] + i0StexStinEcna*n_Stin;} 
  }
  
  for(Int_t i0StexStinEcna=0; i0StexStinEcna<fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
    {
      for(Int_t j0StexStinEcna=0; j0StexStinEcna<fEcal->MaxStinEcnaInStex(); j0StexStinEcna++)
        {
          if( fT2d_lfcc_mostins[i0StexStinEcna][j0StexStinEcna] != (Double_t)0 )
            {fMiscDiag[31]++; fT2d_lfcc_mostins[i0StexStinEcna][j0StexStinEcna] = (Double_t)0;}
        }
    }

  //..... Calculation of the mean LF Cor(c,c) for each pair (Stin_X,Stin_Y)
  //
  //           ! => Warning: this matrix is NOT symmetric => take N*N elements
  //                Only (Stin,Stin) matrix is symmetric.
  //                (StinEcha,StinEcha) matrix inside a (Stin,Stin) element is NOT symmetric
  //                (except for the (Stin,Stin) DIAGONAL elements)
  //      Then:
  //            1D array half_LFccMos[N*N] to put the (channel,channel) correlations

  Int_t ndim = (Int_t)(fEcal->MaxCrysInStin()*fEcal->MaxCrysInStin());

  TVectorD  half_LFccMos(ndim); for(Int_t i=0; i<ndim; i++){half_LFccMos(i)=(Double_t)0.;}

  //..................... Calculation
  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::LowFrequencyMeanCorrelationsBetweenStins()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation, for each "
         << fStinName.Data() << ", of the mean " << endl
         << "           Low Frequency cor(c,c)." << endl;}

  for(Int_t i0StexStinEcna=0; i0StexStinEcna<fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
    {
      for(Int_t j0StexStinEcna=0; j0StexStinEcna<fEcal->MaxStinEcnaInStex(); j0StexStinEcna++)
        {
          //................... .Copy the Mean Correlations(c,c') in 1D vector half_LFccMos() 
          Int_t i_count = 0;
          for(Int_t i0StinCrys=0; i0StinCrys<fEcal->MaxCrysInStin(); i0StinCrys++)
            {
              Int_t i0StexEcha = i0StexStinEcna*fEcal->MaxCrysInStin() + i0StinCrys;
              for(Int_t j0StinCrys=0; j0StinCrys<fEcal->MaxCrysInStin(); j0StinCrys++)
                {
                  Int_t j0StexEcha = j0StexStinEcna*fEcal->MaxCrysInStin() + j0StinCrys;
                  if(  (i0StexEcha>= 0 && i0StexEcha < fEcal->MaxCrysEcnaInStex()) &&
                       (j0StexEcha>= 0 && j0StexEcha < fEcal->MaxCrysEcnaInStex())  )
                  {half_LFccMos(i_count) = fT2d_lf_cor[i0StexEcha][j0StexEcha]; i_count++;}
                  else
                    {cout << "!TEcnaRun::LowFrequencyMeanCorrelationsBetweenStins()> Channel number out of range."
                          << "i0StexEcha = " << i0StexEcha <<", j0StexEcha = " << j0StexEcha << fTTBELL << endl; }
                }
            }
          //...... Calculation of the mean absolute values of the LF mean Correlations(c,c')
          fT2d_lfcc_mostins[i0StexStinEcna][j0StexStinEcna] = (Double_t)0;
          for(Int_t i_rcor = 0; i_rcor < ndim; i_rcor++)
            {
              fT2d_lfcc_mostins[i0StexStinEcna][j0StexStinEcna] += fabs(half_LFccMos(i_rcor));
            }
          fT2d_lfcc_mostins[i0StexStinEcna][j0StexStinEcna] /= (Double_t)ndim;
        }
      if( i0StexStinEcna%10 == 0 ){cout << i0StexStinEcna << "[LFN MCtt], ";}
    }
  cout << endl;

  fTagLFccMoStins[0] = 1;           fFileHeader->fLFccMoStinsCalc++;
} // ------- end of LowFrequencyMeanCorrelationsBetweenStins() -------
void TEcnaRun::LowFrequencyMeanCorrelationsBetweenTowers ( )
void TEcnaRun::LowFrequencyNoise ( )

Definition at line 1678 of file TEcnaRun.cc.

References gather_cfg::cout, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fFileHeader, fFlagPrint, TEcnaHeader::fLfnCalc, fMiscDiag, fNbSampForCalc, fNumberOfEvents, fT1d_sigevt_of_evsamp, fT3d_AdcValues, fTagLfn, i, TEcnaParEcal::MaxCrysEcnaInStex(), and mathSSE::sqrt().

Referenced by AverageLowFrequencyNoise(), and StandardCalculations().

{
// Calculation, for each channel, of the sigma (over the events)
// of the ADC expectation values (over the samples 0 to fNbSampForCalc-1)

  //................... Allocation fT1d_sigevt_of_evsamp + init to zero (mandatory)
  if( fT1d_sigevt_of_evsamp == 0 ){
    fT1d_sigevt_of_evsamp = new Double_t[fEcal->MaxCrysEcnaInStex()];              fCnew++;  
  }
  for(Int_t i0StexEcha=0; i0StexEcha<fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {
      if( fT1d_sigevt_of_evsamp[i0StexEcha] != (Double_t)0 )
        {fMiscDiag[13]++; fT1d_sigevt_of_evsamp[i0StexEcha] = (Double_t)0;}
    }

  //................... Allocation mean_over_samples
  TVectorD  mean_over_samples(fNumberOfEvents);
  for(Int_t i=0; i<fNumberOfEvents; i++){mean_over_samples(i)=(Double_t)0.;}

  //..................... Calculation
  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::LowFrequencyNoise()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation, for each channel, of the sigma (over the events)" << endl
         << "           of the ADC expectation values (over the samples 1 to "
         <<  fNbSampForCalc << ")." << endl;}

  for(Int_t i0StexEcha = 0; i0StexEcha < fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {
      // Calculation of the mean over the events of the mean over the samples
      Double_t mean_over_events = (Double_t)0;
      for (Int_t n_event = 0; n_event < fNumberOfEvents; n_event++)
        {
          // Calculation, for each event, of the mean over the samples  
          mean_over_samples(n_event) = (Double_t)0.;
          for(Int_t i0Sample=0; i0Sample<fNbSampForCalc; i0Sample++)
            {
              mean_over_samples(n_event) += fT3d_AdcValues[i0StexEcha][i0Sample][n_event];
            }
          mean_over_samples(n_event) /= (Double_t)fNbSampForCalc;

          mean_over_events += mean_over_samples(n_event);
        }
       mean_over_events /= (Double_t)fNumberOfEvents;
       
       // Calculation of the sigma over the events of the mean over the samples
       Double_t var = (Double_t)0;
       for (Int_t n_event = 0; n_event < fNumberOfEvents; n_event++)
         {
          Double_t ecart =  mean_over_samples(n_event) - mean_over_events;
          var += ecart*ecart;
         }
       var /= (Double_t)fNumberOfEvents;
       
       fT1d_sigevt_of_evsamp[i0StexEcha] = sqrt(var);
    }
  fTagLfn[0] = 1;                      fFileHeader->fLfnCalc++;
}
void TEcnaRun::MeanCorrelationsBetweenSamples ( )

Definition at line 1820 of file TEcnaRun.cc.

References CorrelationsBetweenSamples(), gather_cfg::cout, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fFileHeader, fFlagPrint, TEcnaHeader::fMeanCorssCalc, fMiscDiag, fNbSampForCalc, fT1d_ev_cor_ss, fT3d_cor_ss, fTagCorCss, fTagMeanCorss, i, and TEcnaParEcal::MaxCrysEcnaInStex().

Referenced by AverageMeanCorrelationsBetweenSamples(), SigmaOfCorrelationsBetweenSamples(), and StandardCalculations().

{
  // Calculation, for all the channels, of the expectation values
  // of the correlations between the first fNbSampForCalc samples
  
  //... preliminary calculation of the correlations if not done yet
  //    (test only the first element since the cor are computed globaly)
  if ( fTagCorCss[0] != 1 ){CorrelationsBetweenSamples(); fTagCorCss[0]=0;}

  //................... Allocations ev_cor_ss + init to zero (mandatory)
  if( fT1d_ev_cor_ss == 0 ){
    Int_t n_StexEcha =  fEcal->MaxCrysEcnaInStex();
    fT1d_ev_cor_ss = new Double_t[n_StexEcha];               fCnew++;  
  }
  for(Int_t i0StexEcha = 0; i0StexEcha < fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {
      if( fT1d_ev_cor_ss[i0StexEcha] != (Double_t)0 )
        {fMiscDiag[15]++; fT1d_ev_cor_ss[i0StexEcha] = (Double_t)0;}
    }
  
  //.......... 1D array half_cor_ss[N(N-1)/2] to put the N (sample,sample) correlations
  //           ( half of (them minus the diagonal) ) 
  Int_t ndim = (Int_t)(fNbSampForCalc*(fNbSampForCalc - 1)/2);

  TVectorD  half_cor_ss(ndim); for(Int_t i=0; i<ndim; i++){half_cor_ss(i)=(Double_t)0.;}

  //..................... Calculation
  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::MeanCorrelationsBetweenSamples()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation, for all the channels, of the expectation values of the" << endl
         << "           correlations between the first " << fNbSampForCalc << " samples." << endl;}

  for(Int_t i0StexEcha = 0; i0StexEcha < fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {
      //..................... half_cor_ss() array filling
      Int_t i_count = 0;
      for (Int_t i0Sample = 0; i0Sample < fNbSampForCalc; i0Sample++)
        {
          for (Int_t j0Sample = 0; j0Sample < i0Sample; j0Sample++)
            {
              half_cor_ss(i_count) = fT3d_cor_ss[i0StexEcha][i0Sample][j0Sample];
              i_count++;
            }
        }
      //...................... mean cor(s,s') calculation
      fT1d_ev_cor_ss[i0StexEcha] = (Double_t)0;
      for(Int_t i_rcor = 0; i_rcor < ndim; i_rcor++)
        {
          fT1d_ev_cor_ss[i0StexEcha] += half_cor_ss(i_rcor);
        }
      fT1d_ev_cor_ss[i0StexEcha] /= (Double_t)ndim;
    }
  fTagMeanCorss[0] = 1;               fFileHeader->fMeanCorssCalc++;
}
Bool_t TEcnaRun::OpenRootFile ( const Text_t *  name,
TString  status 
)

Definition at line 2926 of file TEcnaRun.cc.

References gather_cfg::cout, fCnaParPaths, fCodePrintAllComments, fFlagPrint, fObjectManager, fOpenRootFile, TEcnaRootFile::fRootFileStatus, gCnaRootFile, TEcnaObject::GetPointerValue(), TEcnaRootFile::OpenR(), TEcnaRootFile::OpenW(), TEcnaRootFile::ReStart(), TEcnaParPaths::ResultsRootFilePath(), and ntuplemaker::status.

Referenced by WriteRootFile().

                                                                {
//Open the Root file

  Bool_t ok_open = kFALSE;

  TString s_name;
  s_name = fCnaParPaths->ResultsRootFilePath();
  s_name.Append('/');
  s_name.Append(name);
  
  //gCnaRootFile = new TEcnaRootFile(fObjectManager, s_name.Data(), status);     fCnew++;

      Long_t iCnaRootFile = fObjectManager->GetPointerValue("TEcnaRootFile");
      if( iCnaRootFile == 0 )
        {
          gCnaRootFile = new TEcnaRootFile(fObjectManager, s_name.Data(), status); /* Anew("gCnaRootFile");*/
        }
      else
        {
          gCnaRootFile = (TEcnaRootFile*)iCnaRootFile;
          gCnaRootFile->ReStart(s_name.Data(), status);
        }

  if ( gCnaRootFile->fRootFileStatus == "RECREATE" ){ok_open = gCnaRootFile->OpenW();}
  if ( gCnaRootFile->fRootFileStatus == "READ"     ){ok_open = gCnaRootFile->OpenR();}

  if (!ok_open) // unable to open file
    {
      cout << "TEcnaRun::OpenRootFile> Cannot open file " << s_name.Data() << endl;
    }
  else
    {
      if(fFlagPrint == fCodePrintAllComments)
        {cout << "*TEcnaRun::OpenRootFile> Open ROOT file OK for file " << s_name.Data() << endl;}  
      fOpenRootFile  = kTRUE;
    }
  return ok_open;
}
void TEcnaRun::Pedestals ( )

Definition at line 1580 of file TEcnaRun.cc.

References gather_cfg::cout, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fFileHeader, fFlagPrint, fMiscDiag, fNbSampForCalc, TEcnaHeader::fPedCalc, fT1d_ev_ev, fT2d_ev, fTagMSp, fTagPed, TEcnaParEcal::MaxCrysEcnaInStex(), and SampleMeans().

Referenced by AveragePedestals(), and StandardCalculations().

{
// Calculation, for each channel, of the expectation values
// (over the samples 0 to fNbSampForCalc-1) of the ADC expectation values 
// (over the events)

  //... preliminary calculation of the expectation values if not done yet
  if ( fTagMSp[0] != 1 ){SampleMeans(); fTagMSp[0]=0;}

  //................... Allocation ev_ev + init to zero (mandatory)
  if( fT1d_ev_ev == 0 ){fT1d_ev_ev = new Double_t[fEcal->MaxCrysEcnaInStex()]; fCnew++;}
  for(Int_t i0StexEcha = 0; i0StexEcha < fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {if( fT1d_ev_ev[i0StexEcha] != (Double_t)0 )
      {fMiscDiag[11]++; fT1d_ev_ev[i0StexEcha] = (Double_t)0;}}
  
  //..................... Calculation
  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::Pedestals()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation, for all the channels, of the expectation values (over the samples 1 to "
         << fNbSampForCalc << ")" << endl
         << "          of the ADC expectation values (over the events)." << endl;}
  
  for(Int_t i0StexEcha = 0; i0StexEcha < fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {     
      for (Int_t i0Sample = 0; i0Sample < fNbSampForCalc; i0Sample++)
        {
          fT1d_ev_ev[i0StexEcha] += fT2d_ev[i0StexEcha][i0Sample];
        }
      fT1d_ev_ev[i0StexEcha] /= fNbSampForCalc;
    }
  fTagPed[0] = 1;                      fFileHeader->fPedCalc++;
}
void TEcnaRun::PrintAllComments ( )

Definition at line 4541 of file TEcnaRun.cc.

References gather_cfg::cout, fCodePrintAllComments, and fFlagPrint.

{
// Set flags to authorize printing of the comments of all the methods

  fFlagPrint = fCodePrintAllComments;
  cout << "*TEcnaRun::PrintAllComments()> All the comments will be printed" << endl;
}
void TEcnaRun::PrintComments ( )

Definition at line 4525 of file TEcnaRun.cc.

References gather_cfg::cout, fCodePrintComments, and fFlagPrint.

{
// Set flags to authorize printing of some comments concerning initialisations (default)

  fFlagPrint = fCodePrintComments;
  cout << "*TEcnaRun::PrintComments()> Warnings and some comments on init will be printed" << endl;
}
void TEcnaRun::PrintNoComment ( )

Definition at line 4549 of file TEcnaRun.cc.

References fCodePrintNoComment, and fFlagPrint.

{
// Set flags to forbid the printing of all the comments

  fFlagPrint = fCodePrintNoComment;
}
void TEcnaRun::PrintWarnings ( )

Definition at line 4533 of file TEcnaRun.cc.

References gather_cfg::cout, fCodePrintWarnings, and fFlagPrint.

{
// Set flags to authorize printing of warnings

  fFlagPrint = fCodePrintWarnings;
  cout << "*TEcnaRun::PrintWarnings()> Warnings will be printed" << endl;
}
Bool_t TEcnaRun::ReadSampleAdcValues ( )

Definition at line 1054 of file TEcnaRun.cc.

References fEcal, and TEcnaParEcal::MaxSampADC().

Referenced by TEcnaGui::Calculations().

Bool_t TEcnaRun::ReadSampleAdcValues ( const Int_t &  nb_samp_for_calc)

Definition at line 1056 of file TEcnaRun.cc.

References gather_cfg::cout, TEcnaRead::DataExist(), fCnaParPaths, fEcal, fFileHeader, TEcnaHeader::fFirstReqEvtNumber, fFlagSubDet, TEcnaRead::FileParameters(), TEcnaHeader::fLastReqEvtNumber, TEcnaHeader::fNbOfEvtsCalc, TEcnaHeader::fNbOfSamples, fNbSampForCalc, fObjectManager, TEcnaHeader::fReqNbOfEvts, fRootFileName, fRootFileNameShort, TEcnaHeader::fRunNumber, TEcnaHeader::fStartDate, TEcnaHeader::fStartTime, TEcnaHeader::fStex, TEcnaHeader::fStinNumbersCalc, TEcnaHeader::fStopDate, TEcnaHeader::fStopTime, fT1d_StexStinFromIndex, fT2d_NbOfEvts, fT3d_AdcValues, fTagNbOfEvts, fTagStinNumbers, fTTBELL, TEcnaHeader::fTypAna, TEcnaRead::GetRootFileName(), TEcnaRead::GetRootFileNameShort(), TEcnaRead::GetStartDate(), TEcnaRead::GetStartTime(), TEcnaRead::GetStexStinFromIndex(), TEcnaRead::GetStopDate(), TEcnaRead::GetStopTime(), i, j, TEcnaRead::LookAtRootFile(), TEcnaParEcal::MaxCrysEcnaInStex(), TEcnaParEcal::MaxCrysInStin(), TEcnaParEcal::MaxStinEcnaInStex(), TEcnaRead::PrintNoComment(), TEcnaRead::ReadNumberOfEventsForSamples(), TEcnaRead::ReadSampleAdcValuesSameFile(), TEcnaRead::ReadStinNumbers(), and TEcnaParPaths::ResultsRootFilePath().

{
  // read the Sample ADC values from "ADC" result root files                     (ReadSampleAdcValues)

  // put the number of sample for calculations in attribute fNbSampForCalc
  // and call the method without arguments
  // We must have: nb_samp_for_calc <= fFileHeader->fNbOfSamples (= nb of samples in ROOT file)

  fNbSampForCalc = nb_samp_for_calc;

//   TEcnaRead* MyRootFile = new TEcnaRead(fFlagSubDet.Data(), fCnaParPaths, fCnaParCout,
//                                         fFileHeader, fEcalNumbering, fCnaWrite);          //  fCnew++;
  
  TEcnaRead* MyRootFile = new TEcnaRead(fObjectManager, fFlagSubDet.Data());              //  fCnew++;

  MyRootFile->PrintNoComment();

  MyRootFile->FileParameters(fFileHeader->fTypAna, fFileHeader->fNbOfSamples, fFileHeader->fRunNumber,
                             fFileHeader->fFirstReqEvtNumber, fFileHeader->fLastReqEvtNumber,
                             fFileHeader->fReqNbOfEvts,       fFileHeader->fStex,
                             fCnaParPaths->ResultsRootFilePath().Data());

  Bool_t ok_read = MyRootFile->LookAtRootFile();

  fFileHeader->fStartTime = MyRootFile->GetStartTime();
  fFileHeader->fStopTime  = MyRootFile->GetStopTime();
  fFileHeader->fStartDate = MyRootFile->GetStartDate();
  fFileHeader->fStopDate  = MyRootFile->GetStopDate();
  
  if ( ok_read == kTRUE )
    {
      fRootFileName      = MyRootFile->GetRootFileName();
      fRootFileNameShort = MyRootFile->GetRootFileNameShort();
      cout << "*TEcnaRun::ReadSampleAdcValues> Reading sample ADC values from file: " << endl
           << "           " << fRootFileName << endl;
      
      size_t i_no_data = 0;

      //.......... Read the StinNumbers in the old file                     (ReadSampleAdcValues)
      TVectorD vec(fEcal->MaxStinEcnaInStex());
      for(Int_t i=0; i<fEcal->MaxStinEcnaInStex(); i++){vec(i)=(Double_t)0.;}
      vec = MyRootFile->ReadStinNumbers(fEcal->MaxStinEcnaInStex());
      if( MyRootFile->DataExist() == kTRUE )
        {
          fTagStinNumbers[0] = 1;
          fFileHeader->fStinNumbersCalc = 1;
          for(Int_t i0StexStinEcna=0; i0StexStinEcna<fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
            {fT1d_StexStinFromIndex[i0StexStinEcna] = (Int_t)vec(i0StexStinEcna);}
        }
      else
        {
          i_no_data++;
        }
      //.......... Read the Numbers of Events in the old file                      (ReadSampleAdcValues)
      TMatrixD partial_matrix(fEcal->MaxCrysInStin(), fFileHeader->fNbOfSamples);
      for(Int_t i=0; i<fEcal->MaxCrysInStin(); i++)
        {for(Int_t j=0; j<fFileHeader->fNbOfSamples; j++){partial_matrix(i,j)=(Double_t)0.;}}

      for(Int_t i0StexStinEcna=0; i0StexStinEcna<fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
        {
          Int_t n1StexStin = MyRootFile->GetStexStinFromIndex(i0StexStinEcna);
          if(n1StexStin != -1)
            {
              partial_matrix =
                MyRootFile->ReadNumberOfEventsForSamples
                (n1StexStin, fEcal->MaxCrysInStin(), fFileHeader->fNbOfSamples);

              if( MyRootFile->DataExist() == kTRUE )
                {
                  fTagNbOfEvts[0] = 1;
                  fFileHeader->fNbOfEvtsCalc = 1;
                  for(Int_t i0StinCrys=0; i0StinCrys<fEcal->MaxCrysInStin(); i0StinCrys++)
                    {
                      Int_t i0StexEcha = (n1StexStin-1)*fEcal->MaxCrysInStin() + i0StinCrys;
                      for(Int_t i0Sample=0; i0Sample<fFileHeader->fNbOfSamples; i0Sample++)
                        {fT2d_NbOfEvts[i0StexEcha][i0Sample] = (Int_t)partial_matrix(i0StinCrys,i0Sample);}
                    }
                }
              else
                {
                  i_no_data++;
                }
            }
        }

      //.......... Read the Sample ADC values in the old file                     (ReadSampleAdcValues)
      Double_t*** fT3d_read_AdcValues =
        MyRootFile->ReadSampleAdcValuesSameFile
        (fEcal->MaxCrysEcnaInStex(), fFileHeader->fNbOfSamples, fFileHeader->fReqNbOfEvts);
      
      if( MyRootFile->DataExist() == kTRUE )
        {             
          for(Int_t i0StexEcha=0; i0StexEcha<fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
            {
              for(Int_t i0Sample=0; i0Sample<fFileHeader->fNbOfSamples;i0Sample++)
                {      
                  for(Int_t i_event=0; i_event<fFileHeader->fReqNbOfEvts; i_event++)
                    {fT3d_AdcValues[i0StexEcha][i0Sample][i_event] = 
                       fT3d_read_AdcValues[i0StexEcha][i0Sample][i_event];}
                }
            }
        }
      else
        {
          i_no_data++;
        }
      if(i_no_data)
        {
          cout << "!TEcnaRun::ReadSampleAdcValues(...)> *ERROR* =====> "
               << " Read failure. i_no_data = " << i_no_data << fTTBELL << endl;  
        }
    }
  else
    {
      cout << "!TEcnaRun::ReadSampleAdcValues(...)> *ERROR* =====> "
           << " ROOT file not found" << fTTBELL << endl;     
    }
  delete MyRootFile;        //  fCdelete++;
  return ok_read;
}
void TEcnaRun::SampleMeans ( )

Definition at line 1326 of file TEcnaRun.cc.

References gather_cfg::cout, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fFileHeader, fFlagPrint, fMiscDiag, TEcnaHeader::fMSpCalc, fNbSampForCalc, fNumberOfEvents, fT1d_ev, fT2d_ev, fT3d_AdcValues, fTagMSp, i, and TEcnaParEcal::MaxCrysEcnaInStex().

Referenced by CovariancesBetweenSamples(), Pedestals(), SampleSigmas(), and StandardCalculations().

{
// Calculation of the expectation values over events
// for the samples 0 to fNbSampForCalc and for all the StexEchas

  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::SampleMeans() " << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout  << "           Calculation: sample expectation values over the events"
          << " for each channel." << endl;}
  
  //................... Allocation fT2d_ev
  if ( fT2d_ev == 0 ){
    Int_t n_samp = fNbSampForCalc;
    Int_t n_StexEcha = fEcal->MaxCrysEcnaInStex();
    fT2d_ev = new Double_t*[n_StexEcha];             fCnew++;  
    fT1d_ev = new  Double_t[n_StexEcha*n_samp];      fCnew++;   
    for(Int_t i = 0 ; i < n_StexEcha ; i++){
      fT2d_ev[i] = &fT1d_ev[0] + i*n_samp;}
  }
  //................... init fT2d_ev to zero
  for(Int_t i0StexEcha=0; i0StexEcha<fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {
      for(Int_t i0Sample=0; i0Sample<fNbSampForCalc; i0Sample++)
        {
          if( fT2d_ev[i0StexEcha][i0Sample] != (Double_t)0 )
            {fMiscDiag[1]++; fT2d_ev[i0StexEcha][i0Sample] = (Double_t)0;}
        } 
    }
  
  //................... Calculation
  for (Int_t i0StexEcha = 0 ; i0StexEcha < fEcal->MaxCrysEcnaInStex() ; i0StexEcha++)
    {
      for (Int_t i0Sample = 0 ; i0Sample < fNbSampForCalc ; i0Sample++)
        {
          for( Int_t i_event = 0; i_event < fNumberOfEvents; i_event++ )
            {
              fT2d_ev[i0StexEcha][i0Sample] += fT3d_AdcValues[i0StexEcha][i0Sample][i_event];
            }
          fT2d_ev[i0StexEcha][i0Sample] /= fNumberOfEvents;
        }
    }
  fTagMSp[0] = 1;        fFileHeader->fMSpCalc++;
}
void TEcnaRun::SampleSigmas ( )

Definition at line 1378 of file TEcnaRun.cc.

References gather_cfg::cout, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fFileHeader, fFlagPrint, fMiscDiag, fNbSampForCalc, fNumberOfEvents, TEcnaHeader::fSSpCalc, fT1d_sig, fT2d_ev, fT2d_sig, fT3d_AdcValues, fTagMSp, fTagSSp, TEcnaParEcal::MaxCrysEcnaInStex(), SampleMeans(), and mathSSE::sqrt().

Referenced by StandardCalculations(), and TotalNoise().

{
//Calculation of the sigmas of the samples for all the StexEchas
  
  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::SampleSigmas()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation: sample ADC sigmas over the events "
         << " for each channel." << endl;}
  
  //... preliminary calculation of the expectation values if not done yet.
  //    The tag is set to 1 after call to the method. It is reset to 0
  //    because the expectation values must not be written in the result ROOT file
  //    (since the tag was equal to 0)
  if(fTagMSp[0] != 1){SampleMeans(); fTagMSp[0] = 0;}

  //................... Allocation fT2d_sig
  if( fT2d_sig == 0){
    Int_t n_StexEcha = fEcal->MaxCrysEcnaInStex();
    Int_t n_samp = fNbSampForCalc;
    fT2d_sig = new Double_t*[n_StexEcha];                fCnew++;        
    fT1d_sig = new  Double_t[n_StexEcha*n_samp];         fCnew++;  
    for(Int_t i0StexEcha = 0 ; i0StexEcha < n_StexEcha ; i0StexEcha++){
      fT2d_sig[i0StexEcha] = &fT1d_sig[0] + i0StexEcha*n_samp;}
  }
  // ................... init fT2d_sig to zero
  for(Int_t i0StexEcha=0; i0StexEcha<fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {
      for(Int_t i0Sample=0; i0Sample<fNbSampForCalc; i0Sample++)
        {
          if( fT2d_sig[i0StexEcha][i0Sample] != (Double_t)0 )
            {fMiscDiag[2]++; fT2d_sig[i0StexEcha][i0Sample] = (Double_t)0;}
        } 
    }
  
  //................... Calculation
  for (Int_t i0StexEcha = 0 ; i0StexEcha < fEcal->MaxCrysEcnaInStex() ; i0StexEcha++)
    {
      for (Int_t i0Sample = 0 ; i0Sample < fNbSampForCalc ; i0Sample++)
        {
          Double_t variance = (Double_t)0.;
          for( Int_t i_event = 0; i_event < fNumberOfEvents; i_event++ )
            {
              Double_t ecart = fT3d_AdcValues[i0StexEcha][i0Sample][i_event] - fT2d_ev[i0StexEcha][i0Sample];
              variance += ecart*ecart;
            }
          variance /= fNumberOfEvents;
          fT2d_sig[i0StexEcha][i0Sample] = sqrt(variance);
        }
    }
  fTagSSp[0] = 1;        fFileHeader->fSSpCalc++;
}
void TEcnaRun::SampleValues ( )

Definition at line 1254 of file TEcnaRun.cc.

References TEcnaHeader::fAdcEvtCalc, fEcal, fFileHeader, fTagAdcEvt, and TEcnaParEcal::MaxCrysEcnaInStex().

Referenced by EcnaAnalyzer::analyze(), and EcnaAnalyzer::~EcnaAnalyzer().

{
//3D histo of the sample ADC values for all the triples (StexEcha, sample, event)

  // The histo is already in fT3d_AdcValues[][][]
  // this method sets the "Tag", increment the "f...Calc" (and must be kept for that)
  // f...Calc > 0  => allow writing on file.
 
  if( fFileHeader->fAdcEvtCalc > 0 ){fFileHeader->fAdcEvtCalc = 0;}
  for( Int_t i0StexEcha=0; i0StexEcha<fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {fTagAdcEvt[i0StexEcha] = 1;        fFileHeader->fAdcEvtCalc++;}
}
void TEcnaRun::SetEcalSubDetector ( const TString  SubDet)

Definition at line 274 of file TEcnaRun.cc.

References fCnaParCout, fCnaParPaths, fCnaWrite, fEcal, fEcalNumbering, fFlagSubDet, fgMaxCar, fStexName, and fStinName.

Referenced by TEcnaRun().

{
 // Set Subdetector (EB or EE)

  Int_t MaxCar = fgMaxCar;
  fFlagSubDet.Resize(MaxCar);
  fFlagSubDet = SubDet.Data();

  fEcal          = 0; fEcal          = new TEcnaParEcal(fFlagSubDet.Data());           //fCnew++;
  fEcalNumbering = 0; fEcalNumbering = new TEcnaNumbering(fFlagSubDet.Data(), fEcal);  //fCnew++;
  fCnaWrite      = 0;
  fCnaWrite =
    new TEcnaWrite(fFlagSubDet.Data(), fCnaParPaths, fCnaParCout, fEcal, fEcalNumbering); //fCnew++;

  if( fFlagSubDet == "EB" ){fStexName = "SM "; fStinName = "tower";}
  if( fFlagSubDet == "EE" ){fStexName = "Dee"; fStinName = " SC  ";}
}
void TEcnaRun::SigmaOfCorrelationsBetweenSamples ( )

Definition at line 1886 of file TEcnaRun.cc.

References gather_cfg::cout, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fFileHeader, fFlagPrint, fMiscDiag, fNbSampForCalc, TEcnaHeader::fSigCorssCalc, fT1d_ev_cor_ss, fT1d_sig_cor_ss, fT3d_cor_ss, fTagMeanCorss, fTagSigCorss, i, TEcnaParEcal::MaxCrysEcnaInStex(), MeanCorrelationsBetweenSamples(), and mathSSE::sqrt().

Referenced by AverageSigmaOfCorrelationsBetweenSamples(), and StandardCalculations().

{
  //Calculation of the sigmas of the (sample,sample) correlations for all the StexEchas
 
  //... preliminary calculation of the mean cor(s,s') if not done yet
  //    (test only the first element since the cor are computed globaly)
  //    Results available in array fT1d_ev_cor_ss[i0StexEcha]
  if ( fTagMeanCorss[0] != 1 ){MeanCorrelationsBetweenSamples(); fTagMeanCorss[0]=0;}

  //................... Allocations sig_cor_ss + init to zero
  if( fT1d_sig_cor_ss == 0 ){
    Int_t n_StexEcha =  fEcal->MaxCrysEcnaInStex();
    fT1d_sig_cor_ss = new Double_t[n_StexEcha];                fCnew++;  
  }
  for(Int_t i0StexEcha = 0; i0StexEcha < fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {
      if( fT1d_sig_cor_ss[i0StexEcha] != (Double_t)0 )
        {fMiscDiag[16]++; fT1d_sig_cor_ss[i0StexEcha] = (Double_t)0;}
    }

  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::SigmasOfCorrelationsBetweenSamples()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation of the sigmas of the (sample,sample)" << endl
         << "           correlations for all the channels." << endl;}

  //.......... 1D array half_cor_ss[N(N-1)/2] to put the N (sample,sample) correlations
  //           (half of them minus the diagonal)
  Int_t ndim = (Int_t)(fNbSampForCalc*(fNbSampForCalc - 1)/2);

  TVectorD  half_cor_ss(ndim); for(Int_t i=0; i<ndim; i++){half_cor_ss(i)=(Double_t)0.;}

  //.................. Calculation
  for(Int_t i0StexEcha = 0; i0StexEcha < fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {
      //..................... half_cor_ss() array filling
      Int_t i_count = 0;
      for (Int_t i0Sample = 0; i0Sample < fNbSampForCalc; i0Sample++)
        {
          for (Int_t j0Sample = 0; j0Sample < i0Sample; j0Sample++)
            {
              half_cor_ss(i_count) = fT3d_cor_ss[i0StexEcha][i0Sample][j0Sample];
              i_count++;
            }
        }

      //...................... sigma of cor(s,s') calculation
      Double_t var = (Double_t)0;
      for(Int_t i_rcor = 0; i_rcor < ndim; i_rcor++)
        {
          Double_t ecart = half_cor_ss(i_rcor) - fT1d_ev_cor_ss[i0StexEcha];
          var += ecart*ecart;
        }
      var /= (Double_t)ndim;
      fT1d_sig_cor_ss[i0StexEcha] = sqrt(var);
    }
  fTagSigCorss[0] = 1;              fFileHeader->fSigCorssCalc++;
}
void TEcnaRun::StandardCalculations ( )
void TEcnaRun::StartStopDate ( TString  c_startdate,
TString  c_stopdate 
)

Definition at line 1203 of file TEcnaRun.cc.

References fFileHeader, TEcnaHeader::fStartDate, and TEcnaHeader::fStopDate.

Referenced by EcnaAnalyzer::analyze(), and EcnaAnalyzer::~EcnaAnalyzer().

{
// Put the start an stop date (if they exist) in fFileHeader class attributes.

  fFileHeader->fStartDate = c_startdate;
  fFileHeader->fStopDate  = c_stopdate;
}
void TEcnaRun::StartStopTime ( time_t  t_startime,
time_t  t_stoptime 
)

Definition at line 1195 of file TEcnaRun.cc.

References fFileHeader, TEcnaHeader::fStartTime, and TEcnaHeader::fStopTime.

Referenced by EcnaAnalyzer::analyze(), and EcnaAnalyzer::~EcnaAnalyzer().

{
// Put the start an stop time (if they exist) in fFileHeader class attributes.
  
  fFileHeader->fStartTime = t_startime;
  fFileHeader->fStopTime  = t_stoptime;
}
void TEcnaRun::TotalNoise ( )

Definition at line 1625 of file TEcnaRun.cc.

References gather_cfg::cout, fCnew, fCodePrintAllComments, fCodePrintNoComment, fEcal, fFileHeader, fFlagPrint, fMiscDiag, fNbSampForCalc, fT1d_evsamp_of_sigevt, fT2d_sig, fTagSSp, fTagTno, TEcnaHeader::fTnoCalc, fTTBELL, TEcnaParEcal::MaxCrysEcnaInStex(), and SampleSigmas().

Referenced by AverageTotalNoise(), and StandardCalculations().

{
// Calculation, for each channel, of the expectation values
// (over the samples 0 to fNbSampForCalc-1) of the sigmas 
// (over the events)

  //... preliminary calculation of the sigmas if not done yet
  if ( fTagSSp[0] != 1 ){SampleSigmas(); fTagSSp[0]=0;}

  //................... Allocation ev_ev + init to zero (mandatory)
  if( fT1d_evsamp_of_sigevt == 0 ){fT1d_evsamp_of_sigevt = new Double_t[fEcal->MaxCrysEcnaInStex()]; fCnew++;}
  for(Int_t i0StexEcha = 0; i0StexEcha < fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {if( fT1d_evsamp_of_sigevt[i0StexEcha] != (Double_t)0 )
      {fMiscDiag[12]++; fT1d_evsamp_of_sigevt[i0StexEcha] = (Double_t)0;}}
  
  //..................... Calculation
  if(fFlagPrint != fCodePrintNoComment){cout << "*TEcnaRun::TotalNoise()" << endl;}
  if(fFlagPrint == fCodePrintAllComments){
    cout << "           Calculation, for all the channels, of the expectation values (over the samples 1 to "
         << fNbSampForCalc << ")" << endl
         << "          of the ADC expectation values (over the events)." << endl;}

  for(Int_t i0StexEcha = 0; i0StexEcha < fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {     
      for (Int_t i0Sample = 0; i0Sample < fNbSampForCalc; i0Sample++)
        {
          if( fT2d_sig[i0StexEcha][i0Sample] < 0)
            {
              cout << "!TEcnaRun::TotalNoise() *** ERROR ***> Negative sigma!"
                   << fTTBELL << endl;
            }
          else
            {
              fT1d_evsamp_of_sigevt[i0StexEcha] += fT2d_sig[i0StexEcha][i0Sample];
            }
        }
      fT1d_evsamp_of_sigevt[i0StexEcha] /= fNbSampForCalc;
    }
  fTagTno[0] = 1;                     fFileHeader->fTnoCalc++;
}
void TEcnaRun::TRootAdcEvt ( const Int_t &  user_StexEcha,
const Int_t &  argNbSampWrite 
)

Definition at line 4062 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fFileHeader, TEcnaResultType::fMatHis, TEcnaHeader::fReqNbOfEvts, fT3d_AdcValues, fTagAdcEvt, and gCnaRootFile.

Referenced by WriteRootFile().

{
  if (fTagAdcEvt[user_StexEcha] == 1 )
    {
      for (Int_t i0Sample = 0; i0Sample < argNbSampWrite; i0Sample++)
        {
          //...................... all the bins set to zero
          for (Int_t j_bin = 0; j_bin < fFileHeader->fReqNbOfEvts; j_bin++)
            {
              gCnaRootFile->fCnaIndivResult->fMatHis(i0Sample, j_bin) = (Double_t)0.;
            }
          //...................... fill the non-zero bins 
          for (Int_t j_bin = 0; j_bin < fFileHeader->fReqNbOfEvts; j_bin++)
            {
              gCnaRootFile->fCnaIndivResult->fMatHis(i0Sample, j_bin) =
                fT3d_AdcValues[user_StexEcha][i0Sample][j_bin]; 
            }
        }
    }
}
void TEcnaRun::TRootAvEvCorss ( )

Definition at line 4488 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatHis, fT1d_av_ev_corss, fTagAvMeanCorss, gCnaRootFile, and TEcnaParEcal::MaxStinEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagAvMeanCorss[0] == 1 )   // test 1st elt only since global calc
    {
      for (Int_t j0StexStinEcna = 0; j0StexStinEcna < fEcal->MaxStinEcnaInStex(); j0StexStinEcna++)
        {
          gCnaRootFile->fCnaIndivResult->fMatHis(0, j0StexStinEcna) =
            fT1d_av_ev_corss[j0StexStinEcna];
        }
    }
}
void TEcnaRun::TRootAvHfn ( )

Definition at line 4210 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatHis, fT1d_av_hifn, fTagAvHfn, gCnaRootFile, and TEcnaParEcal::MaxStinEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagAvHfn[0] == 1 )
    {
      for (Int_t j0StexStinEcna = 0; j0StexStinEcna < fEcal->MaxStinEcnaInStex(); j0StexStinEcna++)
        {
          gCnaRootFile->fCnaIndivResult->fMatHis(0, j0StexStinEcna) =
            fT1d_av_hifn[j0StexStinEcna];  
        }
    }
}
void TEcnaRun::TRootAvLfn ( )

Definition at line 4192 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatHis, fT1d_av_lofn, fTagAvLfn, gCnaRootFile, and TEcnaParEcal::MaxStinEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagAvLfn[0] == 1 )
    {
      for (Int_t j0StexStinEcna = 0; j0StexStinEcna < fEcal->MaxStinEcnaInStex(); j0StexStinEcna++)
        {
          gCnaRootFile->fCnaIndivResult->fMatHis(0, j0StexStinEcna) =
            fT1d_av_lofn[j0StexStinEcna];  
        }
    }
}
void TEcnaRun::TRootAvPed ( )

Definition at line 4469 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatHis, fT1d_av_mped, fTagAvPed, gCnaRootFile, and TEcnaParEcal::MaxStinEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagAvPed[0] == 1 )
    {
      for (Int_t j0StexStinEcna = 0; j0StexStinEcna < fEcal->MaxStinEcnaInStex(); j0StexStinEcna++)
        {
          gCnaRootFile->fCnaIndivResult->fMatHis(0, j0StexStinEcna) =
            fT1d_av_mped[j0StexStinEcna];
        }
    }
}
void TEcnaRun::TRootAvSigCorss ( )

Definition at line 4507 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatHis, fT1d_av_sig_corss, fTagAvSigCorss, gCnaRootFile, and TEcnaParEcal::MaxStinEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagAvSigCorss[0] == 1 )   // test 1st elt only since global calc
    {
      for (Int_t j0StexStinEcna = 0; j0StexStinEcna < fEcal->MaxStinEcnaInStex(); j0StexStinEcna++)
        {
          gCnaRootFile->fCnaIndivResult->fMatHis(0, j0StexStinEcna) =
            fT1d_av_sig_corss[j0StexStinEcna];
        } 
    }
}
void TEcnaRun::TRootAvTno ( )

Definition at line 4175 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatHis, fT1d_av_totn, fTagAvTno, gCnaRootFile, and TEcnaParEcal::MaxStinEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagAvTno[0] == 1 )
    {
      for (Int_t j0StexStinEcna = 0; j0StexStinEcna < fEcal->MaxStinEcnaInStex(); j0StexStinEcna++)
        {
          gCnaRootFile->fCnaIndivResult->fMatHis(0, j0StexStinEcna) =
            fT1d_av_totn[j0StexStinEcna];
        }
    }
}
void TEcnaRun::TRootCorCss ( const Int_t &  user_StexEcha,
const Int_t &  argNbSampWrite 
)

Definition at line 4334 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, TEcnaResultType::fMatMat, fT3d_cor_ss, fTagCorCss, and gCnaRootFile.

Referenced by WriteRootFile().

{
   if (fTagCorCss[user_StexEcha] == 1 )
     {
       for (Int_t i0Sample = 0; i0Sample < argNbSampWrite; i0Sample++)
         {
           for (Int_t j0Sample = 0; j0Sample < argNbSampWrite; j0Sample++)
             {
               gCnaRootFile->fCnaIndivResult->fMatMat(i0Sample, j0Sample) =
                 fT3d_cor_ss[user_StexEcha][i0Sample][j0Sample];
             }
         }
     }
}
void TEcnaRun::TRootCovCss ( const Int_t &  user_StexEcha,
const Int_t &  argNbSampWrite 
)

Definition at line 4313 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, TEcnaResultType::fMatMat, fT3d_cov_ss, fTagCovCss, and gCnaRootFile.

Referenced by WriteRootFile().

{
   if (fTagCovCss[user_StexEcha] == 1 )
     {
       for (Int_t i0Sample = 0; i0Sample < argNbSampWrite; i0Sample++)
         {
           for (Int_t j0Sample = 0; j0Sample < argNbSampWrite; j0Sample++)
             {
               gCnaRootFile->fCnaIndivResult->fMatMat(i0Sample, j0Sample) =
                 fT3d_cov_ss[user_StexEcha][i0Sample][j0Sample];
             }
         }
     }
}
void TEcnaRun::TRootHFccMoStins ( )

Definition at line 4154 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatMat, fT2d_hfcc_mostins, fTagHFccMoStins, gCnaRootFile, and TEcnaParEcal::MaxStinEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagHFccMoStins[0] == 1 )
    {
      for (Int_t i0StexStinEcna = 0; i0StexStinEcna < fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
        {
          for (Int_t j0StexStinEcna = 0; j0StexStinEcna < fEcal->MaxStinEcnaInStex(); j0StexStinEcna++)
            {
              gCnaRootFile->fCnaIndivResult->fMatMat(i0StexStinEcna, j0StexStinEcna) =
                fT2d_hfcc_mostins[i0StexStinEcna][j0StexStinEcna];
            }
        }
    }
}
void TEcnaRun::TRootHfCor ( )

Definition at line 4291 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatMat, fT2d_hf_cor, fTagHfCor, gCnaRootFile, and TEcnaParEcal::MaxCrysEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagHfCor[0] == 1 )
    {
      for (Int_t i0StexEcha = 0; i0StexEcha < fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
        {
          for (Int_t j0StexEcha = 0; j0StexEcha < fEcal->MaxCrysEcnaInStex(); j0StexEcha++)
            {
              gCnaRootFile->fCnaIndivResult->fMatMat(i0StexEcha, j0StexEcha) =
                fT2d_hf_cor[i0StexEcha][j0StexEcha];
            }
        }
    }
}
void TEcnaRun::TRootHfCov ( )

Definition at line 4270 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatMat, fT2d_hf_cov, fTagHfCov, gCnaRootFile, and TEcnaParEcal::MaxCrysEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagHfCov[0] == 1 )
    {
      for (Int_t i0StexEcha = 0; i0StexEcha < fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
        {
          for (Int_t j0StexEcha = 0; j0StexEcha < fEcal->MaxCrysEcnaInStex(); j0StexEcha++)
            {
              gCnaRootFile->fCnaIndivResult->fMatMat(i0StexEcha, j0StexEcha) =
                fT2d_hf_cov[i0StexEcha][j0StexEcha];
            }
        }
    }
}
void TEcnaRun::TRootHfn ( )

Definition at line 4431 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatHis, fT1d_evevt_of_sigsamp, fTagHfn, gCnaRootFile, and TEcnaParEcal::MaxCrysEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagHfn[0] == 1 )
    {
      for (Int_t j0StexEcha = 0; j0StexEcha < fEcal->MaxCrysEcnaInStex(); j0StexEcha++)
        {
          gCnaRootFile->fCnaIndivResult->fMatHis(0, j0StexEcha) =
            fT1d_evevt_of_sigsamp[j0StexEcha];
        }      
    }
}
void TEcnaRun::TRootLFccMoStins ( )

Definition at line 4132 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatMat, fT2d_lfcc_mostins, fTagLFccMoStins, gCnaRootFile, and TEcnaParEcal::MaxStinEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagLFccMoStins[0] == 1 )
    {
      for (Int_t i0StexStinEcna = 0; i0StexStinEcna < fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
        {
          for (Int_t j0StexStinEcna = 0; j0StexStinEcna < fEcal->MaxStinEcnaInStex(); j0StexStinEcna++)
            {
              gCnaRootFile->fCnaIndivResult->fMatMat(i0StexStinEcna, j0StexStinEcna) =
                fT2d_lfcc_mostins[i0StexStinEcna][j0StexStinEcna];
            }
        }
    }
}
void TEcnaRun::TRootLfCor ( )

Definition at line 4249 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatMat, fT2d_lf_cor, fTagLfCor, gCnaRootFile, and TEcnaParEcal::MaxCrysEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagLfCor[0] == 1 )
    {
      for (Int_t i0StexEcha = 0; i0StexEcha < fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
        {
          for (Int_t j0StexEcha = 0; j0StexEcha < fEcal->MaxCrysEcnaInStex(); j0StexEcha++)
            {
              gCnaRootFile->fCnaIndivResult->fMatMat(i0StexEcha, j0StexEcha) =
                fT2d_lf_cor[i0StexEcha][j0StexEcha];
            }
        }
    }
}
void TEcnaRun::TRootLfCov ( )

Definition at line 4228 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatMat, fT2d_lf_cov, fTagLfCov, gCnaRootFile, and TEcnaParEcal::MaxCrysEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagLfCov[0] == 1 )
    {
      for (Int_t i0StexEcha = 0; i0StexEcha < fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
        {
          for (Int_t j0StexEcha = 0; j0StexEcha < fEcal->MaxCrysEcnaInStex(); j0StexEcha++)
            {
              gCnaRootFile->fCnaIndivResult->fMatMat(i0StexEcha, j0StexEcha) =
                fT2d_lf_cov[i0StexEcha][j0StexEcha];
            }
        }
    }
}
void TEcnaRun::TRootLfn ( )

Definition at line 4412 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatHis, fT1d_sigevt_of_evsamp, fTagLfn, gCnaRootFile, and TEcnaParEcal::MaxCrysEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagLfn[0] == 1 )
    {
      for (Int_t j0StexEcha = 0; j0StexEcha < fEcal->MaxCrysEcnaInStex(); j0StexEcha++)
        {
          gCnaRootFile->fCnaIndivResult->fMatHis(0, j0StexEcha) =
            fT1d_sigevt_of_evsamp[j0StexEcha];
        }      
    }
}
void TEcnaRun::TRootMeanCorss ( )

Definition at line 4393 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatHis, fT1d_ev_cor_ss, fTagMeanCorss, gCnaRootFile, and TEcnaParEcal::MaxCrysEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagMeanCorss[0] == 1 )
    {
      for (Int_t j0StexEcha = 0; j0StexEcha < fEcal->MaxCrysEcnaInStex(); j0StexEcha++)
        {
          gCnaRootFile->fCnaIndivResult->fMatHis(0, j0StexEcha) =
            fT1d_ev_cor_ss[j0StexEcha];
        }      
    }
}
void TEcnaRun::TRootMSp ( const Int_t &  argNbSampWrite)

Definition at line 4089 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatHis, fT2d_ev, fTagMSp, gCnaRootFile, and TEcnaParEcal::MaxCrysEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagMSp[0] == 1 )
    {
      for (Int_t j0StexEcha = 0; j0StexEcha < fEcal->MaxCrysEcnaInStex(); j0StexEcha++)
        {
          for (Int_t i0Sample = 0; i0Sample < argNbSampWrite; i0Sample++)
            {
              gCnaRootFile->fCnaIndivResult->fMatHis( j0StexEcha, i0Sample) =
                fT2d_ev[j0StexEcha][i0Sample];
            }
        }
    }
}
void TEcnaRun::TRootNbOfEvts ( const Int_t &  argNbSampWrite)

Definition at line 4041 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatHis, fT2d_NbOfEvts, fTagNbOfEvts, gCnaRootFile, and TEcnaParEcal::MaxCrysEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagNbOfEvts[0] == 1 )
    {
      for (Int_t j0StexEcha = 0; j0StexEcha < fEcal->MaxCrysEcnaInStex(); j0StexEcha++)
        {
          for (Int_t i0Sample = 0; i0Sample < argNbSampWrite; i0Sample++)
            {
              gCnaRootFile->fCnaIndivResult->fMatHis(j0StexEcha, i0Sample) =
                fT2d_NbOfEvts[j0StexEcha][i0Sample];
            }
        }
    }
}
void TEcnaRun::TRootPed ( )

Definition at line 4356 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatHis, fT1d_ev_ev, fTagPed, gCnaRootFile, and TEcnaParEcal::MaxCrysEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagPed[0] == 1 )
    {
      for (Int_t j0StexEcha = 0; j0StexEcha < fEcal->MaxCrysEcnaInStex(); j0StexEcha++)
        {
          gCnaRootFile->fCnaIndivResult->fMatHis(0, j0StexEcha) =
            fT1d_ev_ev[j0StexEcha];
        }      
    }
}
void TEcnaRun::TRootSigCorss ( )

Definition at line 4450 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatHis, fT1d_sig_cor_ss, fTagSigCorss, gCnaRootFile, and TEcnaParEcal::MaxCrysEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagSigCorss[0] == 1 )
    {
      for (Int_t j0StexEcha = 0; j0StexEcha < fEcal->MaxCrysEcnaInStex(); j0StexEcha++)
        {
          gCnaRootFile->fCnaIndivResult->fMatHis(0, j0StexEcha) =
            fT1d_sig_cor_ss[j0StexEcha];
        }      
    }
}
void TEcnaRun::TRootSSp ( const Int_t &  argNbSampWrite)

Definition at line 4110 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatHis, fT2d_sig, fTagSSp, gCnaRootFile, and TEcnaParEcal::MaxCrysEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagSSp[0] == 1 )
    {
      for (Int_t j0StexEcha=0; j0StexEcha<fEcal->MaxCrysEcnaInStex(); j0StexEcha++)
        {
          for (Int_t i0Sample=0; i0Sample<argNbSampWrite; i0Sample++)
            {
              gCnaRootFile->fCnaIndivResult->fMatHis(j0StexEcha, i0Sample) =
                fT2d_sig[j0StexEcha][i0Sample];
            }
        }
    }
}
void TEcnaRun::TRootStinNumbers ( )

Definition at line 4023 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatHis, fT1d_StexStinFromIndex, fTagStinNumbers, gCnaRootFile, and TEcnaParEcal::MaxStinEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagStinNumbers[0] == 1 )
    {
      for (Int_t j0StexStinEcna = 0; j0StexStinEcna < fEcal->MaxStinEcnaInStex(); j0StexStinEcna++)
        {
          gCnaRootFile->fCnaIndivResult->fMatHis(0, j0StexStinEcna) =
            fT1d_StexStinFromIndex[j0StexStinEcna];
        }
    }
}
void TEcnaRun::TRootTno ( )

Definition at line 4374 of file TEcnaRun.cc.

References TEcnaRootFile::fCnaIndivResult, fEcal, TEcnaResultType::fMatHis, fT1d_evsamp_of_sigevt, fTagTno, gCnaRootFile, and TEcnaParEcal::MaxCrysEcnaInStex().

Referenced by WriteRootFile().

{
  if (fTagTno[0] == 1 )
    {
      for (Int_t j0StexEcha = 0; j0StexEcha < fEcal->MaxCrysEcnaInStex(); j0StexEcha++)
        {
          gCnaRootFile->fCnaIndivResult->fMatHis(0, j0StexEcha) =
            fT1d_evsamp_of_sigevt[j0StexEcha];
        }      
    }
}
Bool_t TEcnaRun::WriteNewRootFile ( const TString  TypAna)

Definition at line 3067 of file TEcnaRun.cc.

References gather_cfg::cout, fCnaWrite, fCodePrintAllComments, fFileHeader, TEcnaHeader::fFirstReqEvtNumber, fFlagPrint, TEcnaHeader::fLastReqEvtNumber, TEcnaWrite::fMakeResultsFileName(), fNbSampForCalc, fNewRootFileName, fNewRootFileNameShort, TEcnaHeader::fReqNbOfEvts, TEcnaHeader::fRunNumber, TEcnaHeader::fStartDate, TEcnaHeader::fStartTime, TEcnaHeader::fStex, TEcnaHeader::fStopDate, TEcnaHeader::fStopTime, TEcnaWrite::GetRootFileName(), TEcnaWrite::GetRootFileNameShort(), TEcnaWrite::RegisterFileParameters(), and WriteRootFile().

Referenced by TEcnaGui::Calculations().

                                                     {
//Write a new Root file. File name automatically generated by fCnaWrite->fMakeResultsFileName()
//called here.

  Bool_t ok_write = kFALSE;

  fCnaWrite->RegisterFileParameters(TypAna.Data(),   fNbSampForCalc, fFileHeader->fRunNumber,
                                    fFileHeader->fFirstReqEvtNumber, fFileHeader->fLastReqEvtNumber,
                                    fFileHeader->fReqNbOfEvts,       fFileHeader->fStex,
                                    fFileHeader->fStartDate, fFileHeader->fStopDate,
                                    fFileHeader->fStartTime, fFileHeader->fStopTime);

  fCnaWrite->fMakeResultsFileName();  // set fRootFileName, fRootFileNameShort
  fNewRootFileName      = fCnaWrite->GetRootFileName();
  fNewRootFileNameShort = fCnaWrite->GetRootFileNameShort();

  const Text_t *FileShortName = (const Text_t *)fNewRootFileNameShort.Data();

  if(fFlagPrint == fCodePrintAllComments){
    cout << "*TEcnaRun::WriteNewRootFile()> Results are going to be written in the ROOT file: " << endl
         << "                              " << fNewRootFileNameShort.Data() << endl;}

  ok_write = WriteRootFile(FileShortName, fNbSampForCalc);

  return ok_write;
}
Bool_t TEcnaRun::WriteRootFile ( )

Definition at line 3015 of file TEcnaRun.cc.

References gather_cfg::cout, fCnaWrite, fCodePrintAllComments, fCodePrintNoComment, fEcal, fFileHeader, fFlagPrint, TEcnaHeader::fNbOfSamples, fT2d_NbOfEvts, fTTBELL, TEcnaWrite::GetRootFileName(), TEcnaWrite::GetRootFileNameShort(), and TEcnaParEcal::MaxCrysEcnaInStex().

Referenced by WriteNewRootFile().

                              {
//Write the Root file.
//File name automatically generated by fCnaWrite->fMakeResultsFileName()
//previously called in GetReadyToCompute().

  Bool_t ok_write = kFALSE;

  //============================= check number of found events
  Int_t nCountEvts = 0;
  
  for(Int_t i0StexEcha=0; i0StexEcha<fEcal->MaxCrysEcnaInStex(); i0StexEcha++)
    {for(Int_t i0Sample=0; i0Sample<fFileHeader->fNbOfSamples; i0Sample++)
      {nCountEvts += fT2d_NbOfEvts[i0StexEcha][i0Sample];}}
  
  if ( nCountEvts <= 0 )
    {
      //============== no write if no event found
      cout << "!TEcnaRun::WriteRootFile()> No event found for file " << fCnaWrite->GetRootFileNameShort().Data()
           << ". File will not be written." << endl;
      ok_write = kTRUE;
    }
  else
    {    
      if(fFlagPrint == fCodePrintAllComments){
        cout << "*TEcnaRun::WriteRootFile()> Results are going to be written in the ROOT file: " << endl
             << "                           " << fCnaWrite->GetRootFileName().Data() << endl;}

      const Text_t *FileShortName = (const Text_t *)fCnaWrite->GetRootFileNameShort().Data();
      ok_write = WriteRootFile(FileShortName, fFileHeader->fNbOfSamples);

      if( ok_write == kTRUE )
        {
          if(fFlagPrint != fCodePrintNoComment)
            {cout << "*TEcnaRun::WriteRootFile()> Writing OK for file " << fCnaWrite->GetRootFileName().Data()
                  << endl;}
        }
      else
        {
          cout << "!TEcnaRun::WriteRootFile()> Writing FAILLED for file " << fCnaWrite->GetRootFileName().Data()
               << fTTBELL << endl;
        }
    }
  return ok_write;
} // end of WriteRootFile()
Bool_t TEcnaRun::WriteRootFile ( const Text_t *  name,
Int_t &  argNbSampWrite 
)

Definition at line 3108 of file TEcnaRun.cc.

References CloseRootFile(), gather_cfg::cout, cTypAdcEvt, cTypAvHfn, cTypAvLfn, cTypAvMeanCorss, cTypAvPed, cTypAvSigCorss, cTypAvTno, cTypCorCss, cTypCovCss, cTypHFccMoStins, cTypHfCor, cTypHfCov, cTypHfn, cTypLFccMoStins, cTypLfCor, cTypLfCov, cTypLfn, cTypMeanCorss, cTypMSp, cTypNbOfEvts, cTypNumbers, cTypPed, cTypSigCorss, cTypSSp, cTypTno, TEcnaHeader::fAdcEvtCalc, TEcnaHeader::fAvHfnCalc, TEcnaHeader::fAvLfnCalc, TEcnaHeader::fAvMeanCorssCalc, TEcnaHeader::fAvPedCalc, TEcnaHeader::fAvSigCorssCalc, TEcnaHeader::fAvTnoCalc, TEcnaRootFile::fCnaIndivResult, fCnaParPaths, TEcnaRootFile::fCnaResultsTree, fCodePrintAllComments, TEcnaHeader::fCorCssCalc, TEcnaHeader::fCovCssCalc, fEcal, fFileHeader, fFlagPrint, fgMaxCar, TEcnaHeader::fHFccMoStinsCalc, TEcnaHeader::fHfCorCalc, TEcnaHeader::fHfCovCalc, TEcnaHeader::fHfnCalc, cmsPerfSuiteHarvest::file_name, TEcnaResultType::fIthElement, TEcnaHeader::fLFccMoStinsCalc, TEcnaHeader::fLfCorCalc, TEcnaHeader::fLfCovCalc, TEcnaHeader::fLfnCalc, TEcnaResultType::fMatHis, TEcnaResultType::fMatMat, TEcnaHeader::fMeanCorssCalc, TEcnaHeader::fMSpCalc, TEcnaHeader::fNbOfEvtsCalc, fOpenRootFile, TEcnaHeader::fPedCalc, TEcnaHeader::fReqNbOfEvts, TEcnaRootFile::fRootFile, TEcnaHeader::fSigCorssCalc, TEcnaHeader::fSSpCalc, TEcnaHeader::fStinNumbersCalc, fTagAdcEvt, fTagAvHfn, fTagAvLfn, fTagAvMeanCorss, fTagAvPed, fTagAvSigCorss, fTagAvTno, fTagCorCss, fTagCovCss, fTagHFccMoStins, fTagHfCor, fTagHfCov, fTagHfn, fTagLFccMoStins, fTagLfCor, fTagLfCov, fTagLfn, fTagMeanCorss, fTagMSp, fTagNbOfEvts, fTagPed, fTagSigCorss, fTagSSp, fTagStinNumbers, fTagTno, TEcnaHeader::fTnoCalc, fTTBELL, TEcnaResultType::fTypOfCnaResult, gCnaRootFile, i, TEcnaParEcal::MaxCrysEcnaInStex(), TEcnaParEcal::MaxStinEcnaInStex(), mergeVDriftHistosByStation::name, OpenRootFile(), TEcnaNArrayD::ReSet(), TEcnaParPaths::ResultsRootFilePath(), TEcnaResultType::SetSizeHis(), TEcnaResultType::SetSizeMat(), TRootAdcEvt(), TRootAvEvCorss(), TRootAvHfn(), TRootAvLfn(), TRootAvPed(), TRootAvSigCorss(), TRootAvTno(), TRootCorCss(), TRootCovCss(), TRootHFccMoStins(), TRootHfCor(), TRootHfCov(), TRootHfn(), TRootLFccMoStins(), TRootLfCor(), TRootLfCov(), TRootLfn(), TRootMeanCorss(), TRootMSp(), TRootNbOfEvts(), TRootPed(), TRootSigCorss(), TRootSSp(), TRootStinNumbers(), and TRootTno().

{
//Write the Root file

  const Text_t* file_name = name;

  Bool_t ok_write = kFALSE;

  if ( fOpenRootFile )
    {
      cout << "!TEcnaRun::WriteRootFile(...) *** ERROR ***> Writing on file already open."
           << fTTBELL << endl;
    }
  else
    {
      // List of the different element types and associated parameters as ordered in the ROOT file (smaller -> larger)
      //                                                                 ==========
      //
      //         WARNING  *** HERE SIZES ARE THESE FOR THE BARREL (1700 Xtals) and for 10 samples ***
      //
      //   Nb of   Type of element            Type      Type                                    Size    Comment
      // elements                             Number    Name
      //
      //        1  fMatHis(1,StexStin)         ( 0)  cTypNumbers             1*(   1,  68) =         68

      //        1  fMatHis(1,StexStin)         (12)  cTypAvPed               1*(   1,  68) =         68
      //        1  fMatHis(1,StexStin)         ( 3)  cTypAvTno               1*(   1,  68) =         68
      //        1  fMatHis(1,StexStin)         ( 4)  cTypAvLfn               1*(   1,  68) =         68
      //        1  fMatHis(1,StexStin)         ( 5)  cTypAvHfn               1*(   1,  68) =         68
      //        1  fMatHis(1,StexStin)         (13)  cTypAvMeanCorss         1*(   1,  68) =         68
      //        1  fMatHis(1,StexStin)         (14)  cTypAvSigCorss          1*(   1,  68) =         68

      //        1  fMatHis(1,StexEcha)         (16)  cTypPed                 1*(   1,1700) =      1 700
      //        1  fMatHis(1,StexEcha)         (17)  cTypTno                 1*(   1,1700) =      1 700
      //        1  fMatHis(1,StexEcha)         (10)  cTypMeanCorss           1*(   1,1700) =      1 700
      //        1  fMatHis(1,StexEcha)         (18)  cTypLfn                 1*(   1,1700) =      1 700
      //        1  fMatHis(1,StexEcha)         (19)  cTypHfn                 1*(   1,1700) =      1 700
      //        1  fMatHis(1,StexEcha)         (11)  cTypSigCorss            1*(   1,1700) =      1 700

      //        1  fMatMat(Stin,Stin)          (23)  cTypLFccMoStins         1*(  68,  68) =      4 624
      //        1  fMatMat(Stin,Stin)          (24)  cTypHFccMoStins         1*(  68,  68) =      4 624

      //        1  fMatHis(StexEcha, sample)   (15)  cTypNbOfEvts            1*(1700,  10) =     17 000
      //        1  fMatHis(StexEcha, sample)   ( 1)  cTypMSp                 1*(1700,  10) =     17 000
      //        1  fMatHis(StexEcha, sample)   ( 2)  cTypSSp                 1*(1700,  10) =     17 000
 
      //   StexEcha  fMatMat(sample, sample)   ( 8)  cTypCovCss           1700*(  10,  10) =    170 000
      //   StexEcha  fMatMat(sample, sample    ( 9)  cTypCorCss           1700*(  10,  10) =    170 000

      //   StexEcha  fMatHis(sample, bin_evt)  (20)  cTypAdcEvt,          1700*(  10, 150) =  2 550 000

      //        1  fMatMat(StexEcha, StexEcha) (21)  cTypLfCov               1*(1700,1700) =  2 890 000
      //        1  fMatMat(StexEcha, StexEcha) (22)  cTypLfCor               1*(1700,1700) =  2 890 000

      //        1  fMatMat(StexEcha, StexEcha) ( 6)  cTypHfCov               1*(1700,1700) =  2 890 000 // (06/05/08)
      //        1  fMatMat(StexEcha, StexEcha) ( 7)  cTypHfCor               1*(1700,1700) =  2 890 000 // (06/05/08)


      //......................................................................................................

      OpenRootFile(file_name, "RECREATE");

      TString typ_name = "?";
      Int_t v_nb_times = 0;
      Int_t v_dim_one  = 0;
      Int_t v_dim_two  = 0;
      Int_t v_size     = 0;
      Int_t v_tot      = 0;
      Int_t v_tot_writ = 0;

      //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      //       
      //  ===> no general method and no translation to TEcnaWrite
      //       because the fT1d.. and fT2d... arrays
      //       are attributes of TEcnaRun (calls to the "TRootXXXX" methods)
      //
      //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

      //-------------------------- Stin numbers 
      //       1   fMatHis(1,Stin)           ( 0)  cTypNumbers        1*(   1,  68) =         68

      Int_t MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "StinNumbers";
      v_nb_times = fFileHeader->fStinNumbersCalc;
      v_dim_one  = 1;
      v_dim_two  = fEcal->MaxStinEcnaInStex();
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;

      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagStinNumbers[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypNumbers;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeHis(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatMat.ReSet(1,1);
              TRootStinNumbers();
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}

      //-------------------------- Average Pedestals (1 value per Stin)
      //       1   fMatHis(1, StexStin)   (12)  cTypAvPed      1*(1,  68) =     68

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "AvPed";
      v_nb_times = fFileHeader->fAvPedCalc;
      v_dim_one  = 1;
      v_dim_two  = fEcal->MaxStinEcnaInStex();
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;
 
      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagAvPed[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypAvPed;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeHis(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatMat.ReSet(1,1);
              TRootAvPed();
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}

      //-------------------------- Average Total noise
      // StexEcha   fMatHis(1, StexStin)     ( 3)  cTypAvTno      1*(1,  68) =     68

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "AvTno";
      v_nb_times = fFileHeader->fAvTnoCalc;
      v_dim_one  = 1;
      v_dim_two  = fEcal->MaxStinEcnaInStex();
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;

      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagAvTno[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypAvTno;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeHis(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatMat.ReSet(1,1);
              TRootAvTno();
              gCnaRootFile->fCnaResultsTree->Fill(); 
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}

      //-------------------------- Average Low frequency noise
      //       1   fMatHis(1, StexStin)   ( 4)  cTypAvLfn      1*(1,  68) =     68

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "AvLfn";
      v_nb_times = fFileHeader->fAvLfnCalc;
      v_dim_one  = 1;
      v_dim_two  = fEcal->MaxStinEcnaInStex();
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;
 
      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}
      
      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagAvLfn[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypAvLfn;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeHis(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatMat.ReSet(1,1);
              TRootAvLfn();
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}
      
      //-------------------------- Average High frequency noise
      //       1   fMatHis(1, StexStin)   ( 5)  cTypAvHfn      1*(1,  68) =     68

      MaxCar = fgMaxCar;      
      typ_name.Resize(MaxCar);
      typ_name   = "AvHfn";
      v_nb_times = fFileHeader->fAvHfnCalc;
      v_dim_one  = 1;
      v_dim_two  = fEcal->MaxStinEcnaInStex();
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;
 
      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}
      
      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagAvHfn[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypAvHfn;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeHis(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatMat.ReSet(1,1);
              TRootAvHfn();
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}

      //-------------------------- Average mean cor(s,s)
      //       1   fMatHis(1, StexStin)   (13)  cTypAvMeanCorss      1*(1,  68) =     68

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "AvMeanCorss";
      v_nb_times = fFileHeader->fAvMeanCorssCalc;
      v_dim_one  = 1;
      v_dim_two  = fEcal->MaxStinEcnaInStex();
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;
 
      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagAvMeanCorss[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypAvMeanCorss;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeHis(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatMat.ReSet(1,1);
              TRootAvEvCorss();
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}
      
      //--------------------------  Average sigma of cor(s,s)
      //       1   fMatHis(1, StexStin)    (14)  cTypAvSigCorss      1*(1,  68) =     68

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "AvSigCorss";
      v_nb_times = fFileHeader->fAvSigCorssCalc;
      v_dim_one  = 1;
      v_dim_two  = fEcal->MaxStinEcnaInStex();
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;
 
      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagAvSigCorss[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypAvSigCorss;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeHis(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatMat.ReSet(1,1);
              TRootAvSigCorss();
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}

      //-------------------------- Expectation values of the expectation values of the samples (pedestals)
      //       1   fMatHis(1,StexEcha)         (16)  cTypPed                1*(   1,1700) =      1 700

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "Ped";
      v_nb_times = fFileHeader->fPedCalc;
      v_dim_one  = 1;
      v_dim_two  = fEcal->MaxCrysEcnaInStex();
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;

      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagPed[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypPed;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeHis(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatMat.ReSet(1,1);
              TRootPed();
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}
                  
      //-------------------------- Expectation values of the sigmas the samples
      //       1   fMatHis(1,StexEcha)         (17)  cTypTno               1*(   1,1700) =      1 700

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "Tno";
      v_nb_times = fFileHeader->fTnoCalc;
      v_dim_one  = 1;
      v_dim_two  = fEcal->MaxCrysEcnaInStex();
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;

      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagTno[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypTno;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeHis(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatMat.ReSet(1,1);
              TRootTno();
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}
                                     
      //-------------------------- Expectation values of the correlations between the samples
      //       1   fMatHis(1,StexEcha)         (10)  cTypMeanCorss            1*(   1,1700) =      1 700

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "MeanCorss";
      v_nb_times = fFileHeader->fMeanCorssCalc;
      v_dim_one  = 1;
      v_dim_two  = fEcal->MaxCrysEcnaInStex();
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;

      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagMeanCorss[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypMeanCorss;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeHis(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatMat.ReSet(1,1);
              TRootMeanCorss();
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        } 
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}
      
      //-------------------------- Sigmas of the expectation values of the samples  
      //       1   fMatHis(1,StexEcha)         (18)  cTypLfn               1*(   1,1700) =      1 700

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "Lfn";
      v_nb_times = fFileHeader->fLfnCalc;
      v_dim_one  = 1;
      v_dim_two  = fEcal->MaxCrysEcnaInStex();
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;

      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagLfn[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypLfn;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeHis(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatMat.ReSet(1,1);
              TRootLfn();
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        } 
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}
      
      //-------------------------- Sigmas of the sigmas of the samples  
      //       1   fMatHis(1,StexEcha)         (19)  cTypHfn              1*(   1,1700) =      1 700

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "Hfn";
      v_nb_times = fFileHeader->fHfnCalc;
      v_dim_one  = 1;
      v_dim_two  = fEcal->MaxCrysEcnaInStex();
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;

      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}
 
      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagHfn[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypHfn;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeHis(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatMat.ReSet(1,1);
              TRootHfn();
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}
                    
      //-------------------------- Sigmas of the correlations between the samples  
      //       1   fMatHis(1,StexEcha)         (11)  cTypSigCorss           1*(   1,1700) =      1 700

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "SigCorss";
      v_nb_times = fFileHeader->fSigCorssCalc;
      v_dim_one  = 1;
      v_dim_two  = fEcal->MaxCrysEcnaInStex();
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;

      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}
   
      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagSigCorss[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypSigCorss;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeHis(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatMat.ReSet(1,1);
              TRootSigCorss();
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}

      //----- Mean Covariances between StexEchas (averaged over samples) for all (Stin_X,Stin_Y)
      //       1   fMatMat(Stin,Stin)       (23)  cTypLFccMoStins         1*(  68,  68) =      4 624

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "LFccMoStins";
      v_nb_times = fFileHeader->fLFccMoStinsCalc;
      v_dim_one  = fEcal->MaxStinEcnaInStex();
      v_dim_two  = fEcal->MaxStinEcnaInStex();
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;
 
      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagLFccMoStins[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypLFccMoStins;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeMat(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatHis.ReSet(1,1);
              TRootLFccMoStins();
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        } 
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}
            
      //----- Mean Correlations between StexEchas (averaged over samples) for all (Stin_X,Stin_Y)
      //       1   fMatMat(Stin,Stin)       (24)  cTypHFccMoStins         1*(  68,  68) =      4 624

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "HFccMoStins";
      v_nb_times = fFileHeader->fHFccMoStinsCalc;
      v_dim_one  = fEcal->MaxStinEcnaInStex();
      v_dim_two  = fEcal->MaxStinEcnaInStex();
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;
 
      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagHFccMoStins[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypHFccMoStins;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeMat(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatHis.ReSet(1,1);
              TRootHFccMoStins();
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}
      
      //-------------------------- Numbers of found events (NbOfEvts)
      //       1   fMatHis(StexEcha, sample)   (15)  cTypNbOfEvts       1*(1700,  10) =     17 000

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "NbOfEvts";
      v_nb_times = fFileHeader->fNbOfEvtsCalc;
      v_dim_one  = fEcal->MaxCrysEcnaInStex();
      v_dim_two  = argNbSampWrite;
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;
 
      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagNbOfEvts[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypNbOfEvts;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeHis(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatMat.ReSet(1,1);
              TRootNbOfEvts(argNbSampWrite);
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}
                  
      //-------------------------- Expectation values of the samples
      //       1   fMatHis(StexEcha, sample)   ( 1)  cTypMSp                  1*(1700,  10) =     17 000

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "MSp";
      v_nb_times = fFileHeader->fMSpCalc;
      v_dim_one  = fEcal->MaxCrysEcnaInStex();
      v_dim_two  = argNbSampWrite;
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;
 
      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagMSp[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypMSp;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeHis(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatMat.ReSet(1,1);
              TRootMSp(argNbSampWrite);
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}
      
      //-------------------------- Sigmas of the samples     
      //       1   fMatHis(StexEcha, sample)   ( 2)  cTypSSp                 1*(1700,  10) =     17 000

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "SSp";
      v_nb_times = fFileHeader->fSSpCalc;
      v_dim_one  = fEcal->MaxCrysEcnaInStex();
      v_dim_two  = argNbSampWrite;
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;
 
      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagSSp[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypSSp;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeHis(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatMat.ReSet(1,1);
              TRootSSp(argNbSampWrite);
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}

      //-------------------------- Covariances between samples

      // StexEcha   fMatMat(sample,  sample)   ( 8)  cTypCovCss           1700*(  10,  10) =    170 000

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "CovCss";
      v_nb_times = fFileHeader->fCovCssCalc;
      v_dim_one  = argNbSampWrite;
      v_dim_two  = argNbSampWrite;
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;
 
      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i0StexEcha = 0; i0StexEcha < v_nb_times; i0StexEcha++)
        {
          if ( fTagCovCss[i0StexEcha] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypCovCss;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i0StexEcha;
              gCnaRootFile->fCnaIndivResult->SetSizeMat(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatHis.ReSet(1,1);
              TRootCovCss(i0StexEcha, argNbSampWrite);
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i0StexEcha == 0  && fFlagPrint == fCodePrintAllComments)
                {cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}
      
      //-------------------------- Correlations between samples   
      // StexEcha   fMatMat(sample,  sample)   ( 9)  cTypCorCss           1700*(  10,  10) =    170 000

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "CorCss";
      v_nb_times = fFileHeader->fCorCssCalc;
      v_dim_one  = argNbSampWrite;
      v_dim_two  = argNbSampWrite;
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;

      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}
 
      for (Int_t i0StexEcha = 0; i0StexEcha < v_nb_times; i0StexEcha++)
        {
          if ( fTagCorCss[i0StexEcha] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypCorCss;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i0StexEcha;
              gCnaRootFile->fCnaIndivResult->SetSizeMat(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatHis.ReSet(1,1);
              TRootCorCss(i0StexEcha, argNbSampWrite);
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i0StexEcha == 0  && fFlagPrint == fCodePrintAllComments)
                {cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }     
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}

      //-------------------------- Samples as a function of event = events distributions
      // StexEcha   fMatHis(sample,  bins)     (20)  cTypAdcEvt,        1700*(  10, 150) =  2 550 000

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "AdcEvt";
      v_nb_times = fFileHeader->fAdcEvtCalc;
      v_dim_one  = argNbSampWrite;
      v_dim_two  = fFileHeader->fReqNbOfEvts;
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;
 
      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i0StexEcha = 0; i0StexEcha < v_nb_times; i0StexEcha++)
        {
          if ( fTagAdcEvt[i0StexEcha] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypAdcEvt;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i0StexEcha;
              gCnaRootFile->fCnaIndivResult->SetSizeHis(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatMat.ReSet(1,1);
              TRootAdcEvt(i0StexEcha, argNbSampWrite);
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i0StexEcha == 0  && fFlagPrint == fCodePrintAllComments )
                {cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}

      //-------------------------- Low Frequency Covariances between StexEchas
      //  sample   fMatMat(StexEcha, StexEcha)  (21)  cTypLfCov           1*(1700,1700) =  2 890 000

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "LfCov";
      v_nb_times = fFileHeader->fLfCovCalc;
      v_dim_one  = fEcal->MaxCrysEcnaInStex();
      v_dim_two  = fEcal->MaxCrysEcnaInStex();
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;
 
      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i = 0; i < v_nb_times; i++)
        {      //=================================== Record type EB
          if ( fTagLfCov[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypLfCov;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeMat(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatHis.ReSet(1,1);
              TRootLfCov();
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}
      
      //-------------------------- Low Frequency Correlations between StexEchas
      //  sample   fMatMat(StexEcha, StexEcha)  (22)  cTypLfCor           1*(1700,1700) =  2 890 000

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "LfCor";
      v_nb_times = fFileHeader->fLfCorCalc;
      v_dim_one  = fEcal->MaxCrysEcnaInStex();
      v_dim_two  = fEcal->MaxCrysEcnaInStex();
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;

      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagLfCor[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypLfCor;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeMat(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatHis.ReSet(1,1);
              TRootLfCor();
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}

      //-------------------------- High Frequency Covariances between StexEchas
      //  sample   fMatMat(StexEcha, StexEcha)  (6)  cTypHfCov           1*(1700,1700) =  2 890 000

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "HfCov";
      v_nb_times = fFileHeader->fHfCovCalc;
      v_dim_one  = fEcal->MaxCrysEcnaInStex();
      v_dim_two  = fEcal->MaxCrysEcnaInStex();
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;
 
      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagHfCov[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypHfCov;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeMat(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatHis.ReSet(1,1);
              TRootHfCov();
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}
      
      //-------------------------- High Frequency Correlations between StexEchas
      //  sample   fMatMat(StexEcha, StexEcha)  (7)  cTypHfCor           1*(1700,1700) =  2 890 000

      MaxCar = fgMaxCar;
      typ_name.Resize(MaxCar);
      typ_name   = "HfCor";
      v_nb_times = fFileHeader->fHfCorCalc;
      v_dim_one  = fEcal->MaxCrysEcnaInStex();
      v_dim_two  = fEcal->MaxCrysEcnaInStex();
      v_size     = v_nb_times*v_dim_one*v_dim_two;
      v_tot     += v_size;

      if(fFlagPrint == fCodePrintAllComments){
      cout << "*TEcnaRun::WriteRootFile(...)> " << setw(18) << typ_name << ": " << setw(4) << v_nb_times
           << " * ("  << setw(4) << v_dim_one << ","  << setw(4) << v_dim_two  << ") = "
           << setw(9) << v_size;}

      for (Int_t i = 0; i < v_nb_times; i++)
        {
          if ( fTagHfCor[0] == 1 )
            {
              gCnaRootFile->fCnaIndivResult->fTypOfCnaResult = cTypHfCor;
              gCnaRootFile->fCnaIndivResult->fIthElement     = i;
              gCnaRootFile->fCnaIndivResult->SetSizeMat(v_dim_one,v_dim_two);
              gCnaRootFile->fCnaIndivResult->fMatHis.ReSet(1,1);
              TRootHfCor();
              gCnaRootFile->fCnaResultsTree->Fill();
              if( i == 0 && fFlagPrint == fCodePrintAllComments ){cout << " => WRITTEN ON FILE "; v_tot_writ += v_size;}
            }
        }
      if(fFlagPrint == fCodePrintAllComments){cout << endl;}

      //---------------------------------------------- WRITING 
      //...................................... file 
      gCnaRootFile->fRootFile->Write();
      //...................................... header
      fFileHeader->Write();

      //...................................... status message
      if(fFlagPrint == fCodePrintAllComments){
        cout << "*TEcnaRun::WriteRootFile(...)> " << setw(20) << "TOTAL: "
             << setw(21) << "CALCULATED = " << setw(9) <<  v_tot
             << " => WRITTEN ON FILE = "    << setw(9) << v_tot_writ << endl;}

      if(fFlagPrint == fCodePrintAllComments){
        cout << "*TEcnaRun::WriteRootFile(...)> Write OK in file " << file_name << " in directory:" << endl
             << "                           " << fCnaParPaths->ResultsRootFilePath().Data()
             << endl;}

      ok_write = kTRUE;

      //...................................... close
      CloseRootFile(file_name);
    }
  return ok_write;
}  //-------------- End of WriteRootFile(...) -----------------------

Member Data Documentation

Definition at line 405 of file TEcnaRun.h.

Referenced by GetSampleAdcValues(), Init(), and ~TEcnaRun().

Int_t TEcnaRun::fCdelete [private]

Definition at line 374 of file TEcnaRun.h.

Referenced by Init(), and ~TEcnaRun().

Int_t TEcnaRun::fCnaCommand [private]

Definition at line 371 of file TEcnaRun.h.

Referenced by Init().

Int_t TEcnaRun::fCnaError [private]

Definition at line 371 of file TEcnaRun.h.

Referenced by Init().

Definition at line 386 of file TEcnaRun.h.

Referenced by Init(), SetEcalSubDetector(), and TEcnaRun().

Definition at line 388 of file TEcnaRun.h.

Referenced by GetReadyToCompute(), SetEcalSubDetector(), WriteNewRootFile(), and WriteRootFile().

Int_t TEcnaRun::fCnew [private]

Definition at line 510 of file TEcnaRun.h.

Referenced by Init(), and PrintComments().

Definition at line 510 of file TEcnaRun.h.

Referenced by Init(), PrintWarnings(), and ~TEcnaRun().

ofstream TEcnaRun::fFcout_f [private]

Definition at line 507 of file TEcnaRun.h.

Int_t TEcnaRun::fFlagPrint [private]
TString TEcnaRun::fFlagSubDet [private]
Int_t TEcnaRun::fgMaxCar [private]

Definition at line 369 of file TEcnaRun.h.

Referenced by Init(), SetEcalSubDetector(), and WriteRootFile().

Definition at line 380 of file TEcnaRun.h.

Referenced by Init().

Definition at line 412 of file TEcnaRun.h.

Referenced by Init().

Int_t* TEcnaRun::fMiscDiag [private]

Definition at line 379 of file TEcnaRun.h.

Referenced by GetReadyToReadData(), Init(), and ~TEcnaRun().

Int_t TEcnaRun::fNbSampForCalc [private]
Int_t TEcnaRun::fNbSampForFic [private]

Definition at line 407 of file TEcnaRun.h.

Referenced by GetReadyToCompute(), GetReadyToReadData(), GetSampleAdcValues(), and TEcnaRun().

TString TEcnaRun::fNewRootFileName [private]

Definition at line 400 of file TEcnaRun.h.

Referenced by GetNewRootFileName(), and WriteNewRootFile().

Definition at line 401 of file TEcnaRun.h.

Referenced by GetNewRootFileNameShort(), and WriteNewRootFile().

Int_t TEcnaRun::fNumberOfEvents [private]

Definition at line 382 of file TEcnaRun.h.

Referenced by GetReadyToReadData(), OpenRootFile(), ReadSampleAdcValues(), and TEcnaRun().

Bool_t TEcnaRun::fOpenRootFile [private]

Definition at line 395 of file TEcnaRun.h.

Referenced by CloseRootFile(), Init(), OpenRootFile(), and WriteRootFile().

Int_t TEcnaRun::fReadyToReadData [private]

Definition at line 396 of file TEcnaRun.h.

Referenced by GetReadyToReadData(), GetSampleAdcValues(), and Init().

TString TEcnaRun::fRootFileName [private]

Definition at line 398 of file TEcnaRun.h.

Referenced by GetRootFileName(), and ReadSampleAdcValues().

TString TEcnaRun::fRootFileNameShort [private]

Definition at line 399 of file TEcnaRun.h.

Referenced by GetRootFileNameShort(), and ReadSampleAdcValues().

Definition at line 403 of file TEcnaRun.h.

Referenced by GetReadyToReadData(), GetSampleAdcValues(), and Init().

TString TEcnaRun::fStexName [private]
Int_t TEcnaRun::fStinIndexBuilt [private]

Definition at line 404 of file TEcnaRun.h.

Referenced by GetSampleAdcValues(), and Init().

TString TEcnaRun::fStinName [private]
Double_t* TEcnaRun::fT1d_av_ev_corss [private]

Definition at line 457 of file TEcnaRun.h.

Referenced by AverageMeanCorrelationsBetweenSamples(), Init(), TRootAvEvCorss(), and ~TEcnaRun().

Double_t* TEcnaRun::fT1d_av_hifn [private]

Definition at line 467 of file TEcnaRun.h.

Referenced by AverageHighFrequencyNoise(), Init(), TRootAvHfn(), and ~TEcnaRun().

Double_t* TEcnaRun::fT1d_av_lofn [private]

Definition at line 462 of file TEcnaRun.h.

Referenced by AverageLowFrequencyNoise(), Init(), TRootAvLfn(), and ~TEcnaRun().

Double_t* TEcnaRun::fT1d_av_mped [private]

Definition at line 447 of file TEcnaRun.h.

Referenced by AveragePedestals(), Init(), TRootAvPed(), and ~TEcnaRun().

Double_t* TEcnaRun::fT1d_av_sig_corss [private]
Double_t* TEcnaRun::fT1d_av_totn [private]

Definition at line 452 of file TEcnaRun.h.

Referenced by AverageTotalNoise(), Init(), TRootAvTno(), and ~TEcnaRun().

Double_t* TEcnaRun::fT1d_ev [private]

Definition at line 427 of file TEcnaRun.h.

Referenced by Init(), SampleMeans(), and ~TEcnaRun().

Double_t* TEcnaRun::fT1d_ev_cor_ss [private]
Double_t* TEcnaRun::fT1d_ev_ev [private]

Definition at line 445 of file TEcnaRun.h.

Referenced by AveragePedestals(), Init(), Pedestals(), TRootPed(), and ~TEcnaRun().

Double_t* TEcnaRun::fT1d_evevt_of_sigsamp [private]

Definition at line 465 of file TEcnaRun.h.

Referenced by AverageHighFrequencyNoise(), HighFrequencyNoise(), Init(), TRootHfn(), and ~TEcnaRun().

Double_t* TEcnaRun::fT1d_evsamp_of_sigevt [private]

Definition at line 450 of file TEcnaRun.h.

Referenced by AverageTotalNoise(), Init(), TotalNoise(), TRootTno(), and ~TEcnaRun().

Int_t* TEcnaRun::fT1d_NbOfEvts [private]

Definition at line 420 of file TEcnaRun.h.

Referenced by GetReadyToReadData(), Init(), and ~TEcnaRun().

Double_t* TEcnaRun::fT1d_sig [private]

Definition at line 431 of file TEcnaRun.h.

Referenced by Init(), SampleSigmas(), and ~TEcnaRun().

Double_t* TEcnaRun::fT1d_sig_cor_ss [private]
Double_t* TEcnaRun::fT1d_sigevt_of_evsamp [private]

Definition at line 460 of file TEcnaRun.h.

Referenced by AverageLowFrequencyNoise(), Init(), LowFrequencyNoise(), TRootLfn(), and ~TEcnaRun().

Definition at line 505 of file TEcnaRun.h.

Referenced by Init(), and ~TEcnaRun().

Double_t* TEcnaRun::fT2d1_hf_cor [private]

Definition at line 490 of file TEcnaRun.h.

Referenced by HighFrequencyCorrelationsBetweenChannels(), Init(), and ~TEcnaRun().

Double_t* TEcnaRun::fT2d1_hf_cov [private]

Definition at line 486 of file TEcnaRun.h.

Referenced by HighFrequencyCovariancesBetweenChannels(), Init(), and ~TEcnaRun().

Double_t* TEcnaRun::fT2d1_hfcc_mostins [private]

Definition at line 499 of file TEcnaRun.h.

Referenced by HighFrequencyMeanCorrelationsBetweenStins(), Init(), and ~TEcnaRun().

Double_t* TEcnaRun::fT2d1_lf_cor [private]

Definition at line 481 of file TEcnaRun.h.

Referenced by Init(), LowFrequencyCorrelationsBetweenChannels(), and ~TEcnaRun().

Double_t* TEcnaRun::fT2d1_lf_cov [private]

Definition at line 477 of file TEcnaRun.h.

Referenced by Init(), LowFrequencyCovariancesBetweenChannels(), and ~TEcnaRun().

Double_t* TEcnaRun::fT2d1_lfcc_mostins [private]

Definition at line 495 of file TEcnaRun.h.

Referenced by Init(), LowFrequencyMeanCorrelationsBetweenStins(), and ~TEcnaRun().

Double_t** TEcnaRun::fT2d_ev [private]
Double_t** TEcnaRun::fT2d_hf_cor [private]
Double_t** TEcnaRun::fT2d_hf_cov [private]
Double_t** TEcnaRun::fT2d_hfcc_mostins [private]
Double_t** TEcnaRun::fT2d_lf_cor [private]
Double_t** TEcnaRun::fT2d_lf_cov [private]
Double_t** TEcnaRun::fT2d_lfcc_mostins [private]
Int_t** TEcnaRun::fT2d_NbOfEvts [private]
Double_t** TEcnaRun::fT2d_sig [private]

Definition at line 430 of file TEcnaRun.h.

Referenced by Init(), SampleSigmas(), TotalNoise(), TRootSSp(), and ~TEcnaRun().

Int_t** TEcnaRun::fT2dCrysNumbersTable [private]

Definition at line 504 of file TEcnaRun.h.

Referenced by Init(), and ~TEcnaRun().

Double_t* TEcnaRun::fT3d1_AdcValues [private]

Definition at line 416 of file TEcnaRun.h.

Referenced by GetReadyToReadData(), Init(), and ~TEcnaRun().

Double_t* TEcnaRun::fT3d1_cor_ss [private]

Definition at line 441 of file TEcnaRun.h.

Referenced by CorrelationsBetweenSamples(), Init(), and ~TEcnaRun().

Double_t* TEcnaRun::fT3d1_cov_ss [private]

Definition at line 436 of file TEcnaRun.h.

Referenced by CovariancesBetweenSamples(), Init(), and ~TEcnaRun().

Double_t** TEcnaRun::fT3d2_AdcValues [private]

Definition at line 415 of file TEcnaRun.h.

Referenced by GetReadyToReadData(), Init(), and ~TEcnaRun().

Double_t** TEcnaRun::fT3d2_cor_ss [private]

Definition at line 440 of file TEcnaRun.h.

Referenced by CorrelationsBetweenSamples(), Init(), and ~TEcnaRun().

Double_t** TEcnaRun::fT3d2_cov_ss [private]

Definition at line 435 of file TEcnaRun.h.

Referenced by CovariancesBetweenSamples(), Init(), and ~TEcnaRun().

Double_t*** TEcnaRun::fT3d_AdcValues [private]
Double_t*** TEcnaRun::fT3d_cor_ss [private]
Double_t*** TEcnaRun::fT3d_cov_ss [private]
Int_t* TEcnaRun::fTagAdcEvt [private]
Int_t* TEcnaRun::fTagAvHfn [private]
Int_t* TEcnaRun::fTagAvLfn [private]
Int_t* TEcnaRun::fTagAvMeanCorss [private]
Int_t* TEcnaRun::fTagAvPed [private]
Int_t* TEcnaRun::fTagAvSigCorss [private]
Int_t* TEcnaRun::fTagAvTno [private]
Int_t* TEcnaRun::fTagCorCss [private]
Int_t* TEcnaRun::fTagCovCss [private]
Int_t* TEcnaRun::fTagHFccMoStins [private]
Int_t* TEcnaRun::fTagHfCor [private]
Int_t* TEcnaRun::fTagHfCov [private]
Int_t* TEcnaRun::fTagHfn [private]
Int_t* TEcnaRun::fTagLFccMoStins [private]
Int_t* TEcnaRun::fTagLfCor [private]
Int_t* TEcnaRun::fTagLfCov [private]
Int_t* TEcnaRun::fTagLfn [private]
Int_t* TEcnaRun::fTagMeanCorss [private]
Int_t* TEcnaRun::fTagMSp [private]
Int_t* TEcnaRun::fTagNbOfEvts [private]
Int_t* TEcnaRun::fTagPed [private]
Int_t* TEcnaRun::fTagSigCorss [private]
Int_t* TEcnaRun::fTagSSp [private]
Int_t* TEcnaRun::fTagStinNumbers [private]
Int_t* TEcnaRun::fTagTno [private]
TString TEcnaRun::fTTBELL [private]