From 287067793a044b6276278ef4d0f01f480c2b3f33 Mon Sep 17 00:00:00 2001 From: "Kostyleva D.A" Date: Thu, 6 Oct 2016 11:46:05 +0300 Subject: [PATCH] Got rid of BLOCKSNUMBER --- AculData/AculCalibration.cpp | 119 +- AculData/AculCalibration.h | 29 +- calibration1.cxx | 3 +- calibration2.cxx | 4 +- exp1016/deadlayers.cxx | 58 - exp1016/out.txt | 100000 -------------------------------- test.txt | 1 - 7 files changed, 89 insertions(+), 100125 deletions(-) delete mode 100644 exp1016/deadlayers.cxx delete mode 100644 exp1016/out.txt delete mode 100644 test.txt diff --git a/AculData/AculCalibration.cpp b/AculData/AculCalibration.cpp index 4d3067f..a3cab7c 100755 --- a/AculData/AculCalibration.cpp +++ b/AculData/AculCalibration.cpp @@ -22,7 +22,9 @@ AculCalibration::AculCalibration() : fA(0), fB(0) //default constructor fCurrentHStack = NULL; - fCurrentHistList.IsOwner(); + fCurrentHistList.IsOwner(); + fA.Set(32); + fB.Set(32); kRaNOPEAKS = 0; fLowerPeakRelativeHight = 0.; @@ -147,11 +149,6 @@ Int_t AculCalibration::PeaksFitting(TH1* hSpectrum, Option_t* option, Double_t s //creation of output text file with positions of peaks in MeV TString workFile; - //if ( (lowersubaddress == 0) && (uppersubaddress == ADDRESSNUMBER-1) ) { oFileName.Form("%s[].cal", block); } - //else { - //if (lowersubaddress == uppersubaddress) { oFileName.Form("%s[%d].cal", block, lowersubaddress); } - //else { oFileName.Form("%s[%d-%d].cal", block, lowersubaddress, uppersubaddress); } - //} workFile.Form("energies.txt"); ofstream outenergfile; @@ -257,8 +254,6 @@ Int_t AculCalibration::PeaksFitting(TH1* hSpectrum, Option_t* option, Double_t s } } - outenergfile << hSpectrum->GetName() <<"\t"<< fPeak[0] <<"\t"<< fPeak[1] <<"\t"<< fPeak[2] <<"\t"<< fPeak[3] <GetName()<<"\t"<< fPeak[0] <<"\t"<< fPeak[1] <<"\t"<< fPeak[2] <<"\t"<< fPeak[3] <= fA.GetSize()) //if i >= number of array element + { + return 0.; + } + return fA[i]; +} + +Double_t AculCalibration::GetB(Int_t i) +{ + if (i >= fB.GetSize()) + { + return 0.; + } + return fB[i]; +} + + Bool_t AculCalibration::SetCalibrationParameters(const char* calparfile) { @@ -412,11 +429,11 @@ Bool_t AculCalibration::SetCalibrationParameters(const char* calparfile) while (!calFileR.eof()) { calFileR.getline(line, lineLength); if ( line[0] != '*' && line[0] != '#' && line[0] != '%' && (line[0] != '/' && line[1] != '/') ) { //possible comment characters - sscanf(line, "%s %d %d %s %s %s %s", crate, &i, &j, cA, cB, cC, cD); - fAOld[i][j] = atof(cA); - fBOld[i][j] = atof(cB); - fC[i][j] = atof(cC); - fD[i][j] = atof(cD); + sscanf(line, "%s %d %s %s %s %s", crate, /*&i*,*/ &j, cA, cB, cC, cD); // + fA[j] = atof(cA); + fB[j] = atof(cB); + fC[0][j] = atof(cC); + fD[0][j] = atof(cD); } } @@ -426,11 +443,11 @@ Bool_t AculCalibration::SetCalibrationParameters(const char* calparfile) void AculCalibration::PrintCalibrationParameters(const Int_t blockmin, const Int_t blockmax) { - for (Int_t i = blockmin; i <= blockmax; i++) { +// for (Int_t i = blockmin; i <= blockmax; i++) { for (Int_t j = 0; j < ADDRESSNUMBER; j++) { - cout << "C3[" << i << "][" << j << "]" << setw(10) << fAOld[i][j] << setw(10) << fBOld[i][j] << setw(10) << fC[i][j] << setw(10) << fD[i][j] << endl; + cout << "C3[" << "used to be blocksnumber" << "][" << j << "]" << setw(10) << fA[j] << setw(10) << fB[j] << setw(10) << fC[j] << setw(10) << fD[j] << endl; } - } + //} } void AculCalibration::ShowRawSpectra(const char* filename, const Int_t block, TCanvas* rawCanvas, Int_t xaxismin, Int_t xaxismax, /*TObjArray* histList,*/ const Int_t subaddress) @@ -660,7 +677,7 @@ void AculCalibration::FillRawSpectraFile(const char* rawdatafile, const char* bl return; } -Bool_t AculCalibration::CalculateCalibParameters(const char* inputfile, const char* block, const Int_t address, +Bool_t AculCalibration::CalculateCalibParameters(const char* inputfile, const char* block, /*const Int_t address,*/ const char* treename, Int_t lowerchannel, Int_t upperchannel, Int_t nEBins, Int_t lowersubaddress, Int_t uppersubaddress) { @@ -669,10 +686,10 @@ Bool_t AculCalibration::CalculateCalibParameters(const char* inputfile, const ch return 0; } - if ( (address > BLOCKSNUMBER) || (address < 1) ) { + /*if ( (address > BLOCKSNUMBER) || (address < 1) ) { Error("CalculateCalibParameters", "Possible address values have to be in range 1 - %d", BLOCKSNUMBER - 1); return kFALSE; - } + }*/ //muzu nechat if ( (uppersubaddress - lowersubaddress) >= ADDRESSNUMBER ) { @@ -799,14 +816,14 @@ Bool_t AculCalibration::CalculateCalibParameters(const char* inputfile, const ch calGraph->Fit(calFunction, "Q", "goff", 0, 4096); //omezit hlasitost fitovani, udelat volitelne, dodelat volby rozsahu outcalfile << block << "\t" - << address << "\t" + /*<< address << "\t"*/ << i << "\t" << setprecision(4) << calFunction->GetParameter(1) << "\t" << setprecision(4) << calFunction->GetParameter(0) << "\t\t" << fitControl << endl; - fAOld[address][i] = calFunction->GetParameter(1); - fBOld[address][i] = calFunction->GetParameter(0); + fA[i] = calFunction->GetParameter(1); + fB[i] = calFunction->GetParameter(0); //calibration of raw spectra using obtained parameters @@ -821,7 +838,7 @@ Bool_t AculCalibration::CalculateCalibParameters(const char* inputfile, const ch Int_t binCont = (Int_t)hRaw->GetBinContent(j); // cout << j << ":\t" << hRaw->GetBinContent(j) << endl; for (Int_t k = 0; k < binCont; k++) { - hEnergy->Fill( fAOld[address][i]*( j+ranGen.Uniform(-0.5, 0.5) ) + fBOld[address][i] ); + hEnergy->Fill( fA[i]*( j+ranGen.Uniform(-0.5, 0.5) ) + fB[i] ); // cout << j << ":\t" << fAOld[address][i]*( j+ranGen.Uniform(-0.5, 0.5) ) + fBOld[address][i] << endl; // cout << j << ":\t" << fAOld[address][i] << endl; } @@ -847,7 +864,7 @@ void AculCalibration::CalibrateRawSpectra() { const char* iFileName = "clb01_0001.root"; const char* treeName = "AnalysisxTree"; const char* branchName = "LiEvent.SQ22[32]"; - const Int_t address = 22; + //const Int_t address = 22; const Int_t lowerElement = 0; const Int_t upperElement = 32; const Int_t lowerChannel = 100, upperChannel = 4096; @@ -924,7 +941,7 @@ void AculCalibration::CalibrateRawSpectra() { // hEnergy->SetName(histName.Data()); if (variable[i] > lowerChannel && variable[i] < upperChannel) { - hEnergy[i-lowerElement]->Fill( fAOld[address][i]*( variable[i]+ranGen.Uniform(-0.5, 0.5) ) + fBOld[address][i] ); + hEnergy[i-lowerElement]->Fill( fA[i]*( variable[i]+ranGen.Uniform(-0.5, 0.5) ) + fB[i] ); } @@ -960,7 +977,7 @@ void AculCalibration::CalibrateRawSpectra() { return; } -void AculCalibration::CalibrateRawSpectra(const char* inputfile, const char* block, const Int_t address, +void AculCalibration::CalibrateRawSpectra(const char* inputfile, const char* block, /*const Int_t address,*/ const char* treename, Int_t lowerchannel, Int_t upperchannel, Int_t nEBins, Int_t lowersubaddress, Int_t uppersubaddress) { @@ -1070,7 +1087,7 @@ void AculCalibration::CalibrateRawSpectra(const char* inputfile, const char* blo Int_t binCont = (Int_t)hRaw->GetBinContent(j); // cout << j << ":\t" << hRaw->GetBinContent(j) << endl; for (Int_t k = 0; k < binCont; k++) { - hEnergy->Fill( fAOld[address][i]*( j+ranGen.Uniform(-0.5, 0.5) ) + fBOld[address][i] ); + hEnergy->Fill( fA[i]*( j+ranGen.Uniform(-0.5, 0.5) ) + fB[i] ); // cout << j << ":\t" << fAOld[address][i]*( j+ranGen.Uniform(-0.5, 0.5) ) + fBOld[address][i] << endl; // cout << j << ":\t" << fAOld[address][i] << endl; } @@ -1313,18 +1330,18 @@ void AculCalibration::MakeCalibrationFile(Char_t* calibrationfile, Char_t *calfi } //asi fce Reset() - for (Int_t i = 0; i < BLOCKSNUMBER; i++) { + //for (Int_t i = 0; i < BLOCKSNUMBER; i++) { for (Int_t j = 0; j < ADDRESSNUMBER; j++) { - fAOld[i][j] = 0; - fBOld[i][j] = 0; + fA[j] = 0; + fB[j] = 0; } - } + //} const Int_t lineLength = 100; char line[lineLength]; char filename[50]; // ifstream calFileR; - Int_t crate, i, j, id; + Int_t crate, /*i,*/ j, id; // int crate, i, j, id; char cA[40], cB[40], cSigma[40]; @@ -1341,13 +1358,13 @@ void AculCalibration::MakeCalibrationFile(Char_t* calibrationfile, Char_t *calfi while (!calFileR.eof()) { // cout << " in inner while" << endl; calFileR.getline(line, lineLength); - sscanf(line, "%d %d %d %s %s %d %s", &crate, &i, &j, cA, cB, &id, cSigma); + sscanf(line, "%d %d %s %s %d %s", &crate, /*&i,*/ &j, cA, cB, &id, cSigma); // cout << line << endl; if (id == 0) { - fAOld[i][j] = static_cast(atof(cA)); - fBOld[i][j] = static_cast(atof(cB)); + fA[j] = static_cast(atof(cA)); + fB[j] = static_cast(atof(cB)); // fMeanSigma[i][j] = static_cast(atof(cSigma)); - cout << fAOld[i][j] << "\t" << fBOld[i][j] << endl; + cout << fA[j] << "\t" << fB[j] << endl; }//if }//while calFileR.close(); @@ -1364,20 +1381,20 @@ void AculCalibration::MakeCalibrationFile(Char_t* calibrationfile, Char_t *calfi return; } - for (Int_t i = 0; i < BLOCKSNUMBER; i++) { + //for (Int_t i = 0; i < BLOCKSNUMBER; i++) { for (Int_t j = 0; j < ADDRESSNUMBER; j++) { - if (fAOld[i][j] != 0) { + if (fA[j] != 0) { CalibFileW << std::right << setw(2) << "3" - << setw(4) << i + /*<< setw(4) << i*/ << setw(4) << j - << setw(12) << fAOld[i][j] - << setw(12) << fBOld[i][j] + << setw(12) << fA[j] + << setw(12) << fB[j] // << setw(10) << fMeanSigma[i][j] << endl; } } - } + //} CalibFileW.close(); @@ -1401,15 +1418,15 @@ void AculCalibration::Reset() { //reset calibration parameters fAOld, fBOld, fC, fD to zero - for (Int_t i = 0; i < BLOCKSNUMBER; i++) { + //for (Int_t i = 0; i < BLOCKSNUMBER; i++) { for (Int_t j = 0; j < ADDRESSNUMBER; j++) { - fAOld[i][j] = 0; - fBOld[i][j] = 0; - fC[i][j] = 0; - fD[i][j] = 0; + fA[j] = 0; + fB[j] = 0; + fC[0][j] = 0.; + fD[0][j] = 0.; // fMeanSigma[i][j] = 0; } - } + //} return; } diff --git a/AculData/AculCalibration.h b/AculData/AculCalibration.h index c1933de..3d6cc05 100755 --- a/AculData/AculCalibration.h +++ b/AculData/AculCalibration.h @@ -76,23 +76,27 @@ public: Double_t fFitPeakThreshold; //pouziva se, private, prozkoumat, k cemu vlastne slouzi ve fci ShowPeaks, popremyslet o vhodnem prednastaveni v konstruktoru //these variables are the main for the class - Double_t fAOld[BLOCKSNUMBER][ADDRESSNUMBER]; //calibration parameter, f(x) = fAOld*x + fBOld - Double_t fBOld[BLOCKSNUMBER][ADDRESSNUMBER]; //calibration parameter, f(x) = fAOld*x + fBOld +// Double_t fAOld[BLOCKSNUMBER][ADDRESSNUMBER]; //calibration parameter, f(x) = fAOld*x + fBOld +// Double_t fBOld[BLOCKSNUMBER][ADDRESSNUMBER]; //calibration parameter, f(x) = fAOld*x + fBOld Double_t fC[BLOCKSNUMBER][ADDRESSNUMBER]; //treti kalibracni parametr, jine zavislosti nez pol1 Double_t fD[BLOCKSNUMBER][ADDRESSNUMBER]; //ctvrty kalibracni parametr - + +private: TArrayD fA; - TArrayD fB; - - - + TArrayD fB; +// TArrayD fC; +// TArrayD fD; +public: //smysl je velmi pochybny - TFile *fCalInformation; + TFile *fCalInformation; + + Double_t GetA(Int_t i); //to obtain calib parameter A + Double_t GetB(Int_t i); //to obtain calib parameter B //private: Double_t fPeak[DEFAULTNOPEAKS]; //v teto promenne je ulozena momentalni hodnota piku v kanalech, zejmena v jedne fci, mozno udelat ji jako lokalni, bude navratovou hodnotou fce PeaksFitting, predelat delku pole - + public: AculCalibration(); //default constructor @@ -142,9 +146,10 @@ public: // blockmax: maximum block data are displayed for Bool_t CalculateCalibParameters(const char* inputfile, const char* block, - const Int_t address, const char* treename, Int_t lowerchannel = 0, + /*const Int_t address,*/ const char* treename, Int_t lowerchannel = 0, Int_t upperchannel = 4095, Int_t nEBins = 1000, Int_t lowersubaddress = 0, - Int_t uppersubaddress = ADDRESSNUMBER-1); //calculate calibration parameters for given block in given file + Int_t uppersubaddress = ADDRESSNUMBER-1); //calculate calibration parameters for given block in given file + //function is not completely ready to use // //function for calculation of calibrate parameters for DAQ system based on "Go4" @@ -173,7 +178,7 @@ public: - void CalibrateRawSpectra(const char* inputfile, const char* block, const Int_t address, const char* treename, Int_t lowerchannel = 0, Int_t upperchannel = 4095, Int_t nEBins = 1000, Int_t lowersubaddress = 0, Int_t uppersubaddress = ADDRESSNUMBER-1); + void CalibrateRawSpectra(const char* inputfile, const char* block, /*const Int_t address,*/ const char* treename, Int_t lowerchannel = 0, Int_t upperchannel = 4095, Int_t nEBins = 1000, Int_t lowersubaddress = 0, Int_t uppersubaddress = ADDRESSNUMBER-1); // Bool_t EnergyPositions(const char* inputfile, const char* block, // const Int_t address, const Int_t address, const char* treename, Int_t lowerchannel = 0, diff --git a/calibration1.cxx b/calibration1.cxx index d1c0c11..9cf7473 100644 --- a/calibration1.cxx +++ b/calibration1.cxx @@ -3,7 +3,8 @@ AculCalibration cal; cal.SetInputParameters(); //from .par - cal.CalculateCalibParameters("clb08_0001.root", "SQ22", 22, "AnalysisxTree", 100, 4095); + cal.CalculateCalibParameters("clb08_0001.root", "SQ22", "AnalysisxTree", 100, 4095); + // CalculateCalibParameters(const char* inputfile, const char* block, const Int_t address, const char* treename, Int_t lowerchannel = 0, Int_t upperchannel = 4095, Int_t nEBins = 1000, Int_t lowersubaddress = 0, Int_t uppersubaddress = ADDRESSNUMBER-1); TFile fr("SQ22[]E.root"); diff --git a/calibration2.cxx b/calibration2.cxx index 01104d8..ba7e382 100644 --- a/calibration2.cxx +++ b/calibration2.cxx @@ -4,11 +4,11 @@ AculCalibration cal; cal->SetInputParameters(); - cal->SetCalibrationParameters("./run8/SQ22[].cal"); //takes calibration parameters + cal->SetCalibrationParameters("SQ22[].cal"); //takes calibration parameters cal->PrintCalibrationParameters(22, 22); TCanvas *c1 = new TCanvas(); - cal->CalibrateRawSpectra("clb09_0001.root", "SQ22", 22, "AnalysisxTree", 100, 800, 500); //takes data from raw file and calibrates it with obtained calibration parameters + cal->CalibrateRawSpectra("clb09_0001.root", "SQ22", "AnalysisxTree", 100, 800, 500); //takes data from raw file and calibrates it with obtained calibration parameters TFile fr("SQ22[]E.root"); cout << fr.GetListOfKeys()->GetEntries() << " histograms" << endl; diff --git a/exp1016/deadlayers.cxx b/exp1016/deadlayers.cxx deleted file mode 100644 index 9ace9e8..0000000 --- a/exp1016/deadlayers.cxx +++ /dev/null @@ -1,58 +0,0 @@ -{ - gSystem->Load("../libTELoss.so"); - - TELoss mSi; -//set parameters for Si and alpha - mSi.SetEL(1, 2.321); // density in g/cm3 - mSi.AddEL(14., 28.086, 1); //Z, mass -// mSi.SetZP(1., 1.); //protons - mSi.SetZP(2., 4.); //alphas, Z, A - mSi.SetEtab(100000, 200.); // ?, MeV calculate ranges - mSi.SetDeltaEtab(300); // calculate delta E - -// TCanvas *c1 = new TCanvas("name", "title which can consist more than one word.", 617, 0, 1058, 972); -// cout << mSi.GetE(50, 1000) << endl; //(input energy E0 in MeV, microns) -// cout << mSi.GetE0(9.04, 1000) << endl; //(output energy E in MeV, microns) - -//calculated energies for run1 - run3 -/* - Double_t deltaL1 = mSi.GetR(4.789, 4.623); //(doule E0, double E in MeV) calculates layer in mcm for averages - Double_t deltaL2 = mSi.GetR(5.5,5.355); - Double_t deltaL3 = mSi.GetR(6.017,5.880); - Double_t deltaL4 = mSi.GetR(7.693, 7.577); -*/ -//calculated energies for run4 - run5 -/* - Double_t deltaL1 = mSi.GetR(4.782,4.613); //(doule E0, double E in MeV) calculates layer in mcm for averages - Double_t deltaL2 = mSi.GetR(5.503,5.348); - Double_t deltaL3 = mSi.GetR(6.016,5.875); - Double_t deltaL4 = mSi.GetR(7.692,7.571); -*/ - -//calculated energies for run6 - run7 -/* - Double_t deltaL1 = mSi.GetR(4.788,4.675); //(doule E0, double E in MeV) calculates layer in mcm for averages - Double_t deltaL2 = mSi.GetR(5.502,5.340); - Double_t deltaL3 = mSi.GetR(6.017,5.923); - Double_t deltaL4 = mSi.GetR(7.693,7.612); -*/ -//calculated energies for run8 - run9 - - Double_t deltaL1 = mSi.GetR(4.787,4.648); //(doule E0, double E in MeV) calculates layer in mcm for averages - Double_t deltaL2 = mSi.GetR(5.501,5.380); - Double_t deltaL3 = mSi.GetR(6.018,5.903); - Double_t deltaL4 = mSi.GetR(7.692,7.594); - - cout << deltaL1 << " mcm" << endl; //MeV, microns - delta layer - cout << deltaL2 << " mcm" << endl; - cout << deltaL3 << " mcm" << endl; - cout << deltaL4 << " mcm" << endl << endl; - - cout << "dead layer 1 is: " << deltaL1/(TMath::Sqrt(2) - 1) << " mcm" << endl; //MeV, microns - cout << "dead layer 2 is: " <