本文整理汇总了C++中DataTree::setupInputTree方法的典型用法代码示例。如果您正苦于以下问题:C++ DataTree::setupInputTree方法的具体用法?C++ DataTree::setupInputTree怎么用?C++ DataTree::setupInputTree使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DataTree
的用法示例。
在下文中一共展示了DataTree::setupInputTree方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char *argv[])
{
if ( argc<2 || argc>3 ) {
std::cout << "USAGE: ./replay_pass3.exe [run] [applyEndpointGain = false]\n\n";
exit(0);
}
cout.setf(ios::fixed, ios::floatfield);
cout.precision(12);
int runNumber = atoi(argv[1]);
bool applyEndpointGain = false;
if ( argc==3 && ( TString(argv[2])==TString("true") || atoi(argv[2])==1 ) ) applyEndpointGain = true;
int nPMT = 8;
int nParams = 3; //takes a quadratic
// Run number integer
cout << "Run " << runNumber << " ..." << endl;
char tempOut[500];
sprintf(tempOut, "%s/replay_pass3_%s.root",getenv("REPLAY_PASS3"), argv[1]);
//sprintf(tempOut, "replay_pass3_%s.root", argv[1]);
//Check if the file is good already and quit if it is so that we can
// only replay the files that are bad...
if ( OnlyReplayBadFiles ) {
if ( checkIfReplayFileIsGood(std::string(tempOut)) == 1 ) return 1;
else {
std::ofstream badRuns("badRuns.txt", std::fstream::app);
badRuns << argv[1] << "\n";
badRuns.close();
}
}
// Reading in pedestals file to get cathode pedestals
// Read pedestals file
char tempFilePed[500];
int iRun;
sprintf(tempFilePed, "%s/pedestals_%s.dat", getenv("PEDESTALS"), argv[1]);
std::cout << "... Reading: " << tempFilePed << std::endl;
std::ifstream filePed(tempFilePed);
for (int i=0; i<8; i++) {
filePed >> iRun >> pedQadc[i];
}
for (int i=0; i<32; i++) {
filePed >> iRun >> pedPdc2[i];
}
for (int i=0; i<32; i++) {
filePed >> iRun >> pedPadc[i];
}
filePed >> iRun >> pedPdc30;
filePed >> iRun >> pedPdc34;
cout << "... Applying Calibration ..." << endl;
unsigned int calibrationPeriod = getSrcRunPeriod(runNumber);
LinearityCurve linearityCurve(calibrationPeriod,false); //Get the linearity curve
EreconParameterization eRecon(runNumber); //Load the simulated relationship between EQ and Etrue
WirechamberCal mwpcCal(runNumber); //Load the Wirechamber Calibration
std::vector <Double_t> epGain(8,1.); // Loading the endpoint gain factors if they are to be used
if ( applyEndpointGain ) epGain = loadEndpointGain(runNumber);
std::vector <Int_t> pmtQuality = getEreconPMTQuality(runNumber); //Read in PMT quality file
std::vector <Double_t> alpha = GetAlphaValues(calibrationPeriod); //Get values for nPE/keV...
PositionMap posmap(5.0,50.); //Reading Scintillator position maps
posmap.readPositionMap( getXeRunPeriod(runNumber), "endpoint" );
MWPCPositionMap anodeMap(5., 50.); // Reading Anode position maps
anodeMap.readMWPCPositionMap( getXeRunPeriodForMWPCmap(runNumber) ,250.,300.); // Using 250-300 keV because that's the most probable range
DataTree *t = new DataTree(); // DataTree structure for input pass2 and output pass3
t->makeOutputTree(std::string(tempOut),"pass3"); // Open output ntuple
// Input ntuple
char tempIn[500];
sprintf(tempIn, "%s/replay_pass2_%s.root", getenv("REPLAY_PASS2"),argv[1]);
t->setupInputTree(std::string(tempIn),"pass2");
int nEvents = t->getEntries();
cout << "... Processing nEvents = " << nEvents << endl;
vector < vector <Int_t> > gridPoint;
vector < Double_t > eta;
vector < Double_t > old_eta;
vector < Double_t > gaus_eta;
//.........这里部分代码省略.........
示例2: main
int main(int argc, char *argv[]) {
if (argc!=2) {
std::cout << "Usage: ./endpointGain.exe [octet]\n";
//std::cout << "The code will produce comparisons for every octet in the range given,\non an octet-by-octet basis, and as a whole, using the Super-Sum\n";
exit(0);
}
int octet = atoi(argv[1]);
if ( std::find(badOct.begin(), badOct.end(),octet) != badOct.end() ) {
std::cout << "Bad Octet... \n";
std::ofstream gainFile(TString::Format("%s/EndpointGain/endpointGain_octet-%i.dat", getenv("ENDPOINT_ANALYSIS"),octet));
for ( int i=0; i<8; ++i ) gainFile << 1. << std::endl;
gainFile.close();
return 0;
}
int nBins = 100;
double minRange = 0.;
double maxRange = 1000.;
std::vector <int> runs = readOctetFile(octet);
std::vector <int> bgruns = readOctetFileForBGruns(octet);
std::vector < std::vector <Double_t> > pmtBackgroundRates = readPMTbackgroundRates(octet);
////////////////// Begin with data files /////////////////////
// Vectors for creating the individual runs events and errors
std::vector < std::vector < std::vector <Double_t> > > pmtSpec;
std::vector < std::vector < std::vector <Double_t> > > pmtSpecErr;
pmtSpec.resize(runs.size(),std::vector<std::vector<Double_t>>(8,std::vector<Double_t>(nBins,0.)));
pmtSpecErr.resize(runs.size(),std::vector<std::vector<Double_t>>(8,std::vector<Double_t>(nBins,0.)));
std::vector < std::vector < std::vector <Double_t> > > bgpmtSpec;
std::vector < std::vector < std::vector <Double_t> > > bgpmtSpecErr;
bgpmtSpec.resize(runs.size(),std::vector<std::vector<Double_t>>(8,std::vector<Double_t>(nBins,0.)));
bgpmtSpecErr.resize(runs.size(),std::vector<std::vector<Double_t>>(8,std::vector<Double_t>(nBins,0.)));
// Now loop over each run to determine the individual spectra, then fill their appropriate bins in the vector
TH1D *spec[8]; // All 8 PMTs signals
TH1D *bgspec[8]; // All 8 PMTs bg signals
TH1D *simspec[8]; // All 8 PMTs signals
int nRun = 0;
std::vector <Double_t> totalTime(runs.size(),0.); // Holds the runLengths
std::vector <Double_t> bgtotalTime(runs.size(),0.); // Holds the runLengths
//runs.resize(0);
for ( auto rn : runs ) {
for ( int i=0; i<8; ++i ) {
spec[i] = new TH1D(TString::Format("PMT%i",i),TString::Format("PMT %i",i),
nBins, minRange, maxRange);
}
// DataTree structure
DataTree t;
// Input ntuple
char tempIn[500];
sprintf(tempIn, "%s/replay_pass3_%i.root", getenv("REPLAY_PASS3"),rn);
t.setupInputTree(std::string(tempIn),"pass3");
unsigned int nevents = t.getEntries();
t.getEvent(nevents-1);
totalTime[nRun] = t.Time;
double r2E = 0.; //position of event squared
double r2W = 0.;
for (unsigned int n=0 ; n<nevents ; n++ ) {
t.getEvent(n);
r2E = t.xE.center*t.xE.center + t.yE.center*t.yE.center;
r2W = t.xW.center*t.xW.center + t.yW.center*t.yW.center;
if ( t.PID==1 && t.Side<2 && t.Type==0 && t.Erecon>0. ) {
if ( t.Side==0 ) {
if ( t.xeRC>6 || t.yeRC>6 ) continue; //only look at MWPC signal on East
else if ( t.xE.mult<1 || t.yE.mult<1 ) continue;
//.........这里部分代码省略.........
示例3: main
int main(int argc, char *argv[])
{
cout.setf(ios::fixed, ios::floatfield);
cout.precision(12);
cout << "Run " << argv[1] << " ..." << endl;
cout << "... Applying Bi pulser gain corrections ..." << endl;
// Read gain corrections file
char tempFileGain[500];
sprintf(tempFileGain, "%s/gain_bismuth_%s.dat",getenv("GAIN_BISMUTH"), argv[1]);
cout << "... Reading: " << tempFileGain << endl;
double fitMean[8], gainCorrection[8];
ifstream fileGain(tempFileGain);
for (int i=0; i<8; i++) {
fileGain >> fitMean[i] >> gainCorrection[i];
}
cout << "... PMT E1: " << gainCorrection[0] << endl;
cout << "... PMT E2: " << gainCorrection[1] << endl;
cout << "... PMT E3: " << gainCorrection[2] << endl;
cout << "... PMT E4: " << gainCorrection[3] << endl;
cout << "... PMT W1: " << gainCorrection[4] << endl;
cout << "... PMT W2: " << gainCorrection[5] << endl;
cout << "... PMT W3: " << gainCorrection[6] << endl;
cout << "... PMT W4: " << gainCorrection[7] << endl;
// Open output ntuple
char tempOut[500];
sprintf(tempOut, "%s/replay_pass2_%s.root",getenv("REPLAY_PASS2"), argv[1]);
//sprintf(tempOut, "replay_pass2_%s.root", argv[1]);
DataTree *t = new DataTree();
t->makeOutputTree(std::string(tempOut),"pass2");
char tempIn[500];
sprintf(tempIn, "%s/replay_pass1_%s.root", getenv("REPLAY_PASS1"),argv[1]);
//sprintf(tempIn, "../replay_pass1/replay_pass1_%s.root", argv[1]);
t->setupInputTree(std::string(tempIn),"pass1");
int nEvents = t->getEntries();
cout << "... Processing nEvents = " << nEvents << endl;
// Loop over events
for (Int_t i=0; i<nEvents; i++) {
t->getEvent(i);
// Apply gain correction factors
t->ScintE.q1 = t->ScintE.q1*gainCorrection[0];
t->ScintE.q2 = t->ScintE.q2*gainCorrection[1];
t->ScintE.q3 = t->ScintE.q3*gainCorrection[2];
t->ScintE.q4 = t->ScintE.q4*gainCorrection[3];
t->ScintW.q1 = t->ScintW.q1*gainCorrection[4];
t->ScintW.q2 = t->ScintW.q2*gainCorrection[5];
t->ScintW.q3 = t->ScintW.q3*gainCorrection[6];
t->ScintW.q4 = t->ScintW.q4*gainCorrection[7];
t->fillOutputTree();
}
// Write output ntuple
t->writeOutputFile();
delete t;
return 0;
}
示例4: main
//.........这里部分代码省略.........
for (int p=0; p<nPMT; p++) {
for (int i=0; i<posmap.getNbinsXY(); i++) {
for (int j=0; j<posmap.getNbinsXY(); j++) {
if (p == 0)
sprintf(hisxyName, "e0_%0.0f_%0.0f", posmap.getBinCenter(i), posmap.getBinCenter(j));
if (p == 1)
sprintf(hisxyName, "e1_%0.0f_%0.0f", posmap.getBinCenter(i), posmap.getBinCenter(j));
if (p == 2)
sprintf(hisxyName, "e2_%0.0f_%0.0f", posmap.getBinCenter(i), posmap.getBinCenter(j));
if (p == 3)
sprintf(hisxyName, "e3_%0.0f_%0.0f", posmap.getBinCenter(i), posmap.getBinCenter(j));
if (p == 4)
sprintf(hisxyName, "w0_%0.0f_%0.0f", posmap.getBinCenter(i), posmap.getBinCenter(j));
if (p == 5)
sprintf(hisxyName, "w1_%0.0f_%0.0f", posmap.getBinCenter(i), posmap.getBinCenter(j));
if (p == 6)
sprintf(hisxyName, "w2_%0.0f_%0.0f", posmap.getBinCenter(i), posmap.getBinCenter(j));
if (p == 7)
sprintf(hisxyName, "w3_%0.0f_%0.0f", posmap.getBinCenter(i), posmap.getBinCenter(j));
hisxy[p][i][j] = new TH1D(hisxyName, "", nBinHist,-100.,4000.0);
}
}
}
// Loop through input ntuples
char tempIn[500];
for (int i=0; i<nRuns; i++) {
// Open input ntuple
sprintf(tempIn, "%s/replay_pass2_%i.root",getenv("REPLAY_PASS2"), runList[i]);
DataTree *t = new DataTree();
t->setupInputTree(std::string(tempIn),"pass2");
if ( !t->inputTreeIsGood() ) {
std::cout << "Skipping " << tempIn << "... Doesn't exist or couldn't be opened.\n";
continue;
}
int nEvents = t->getEntries();
cout << "Processing " << runList[i] << " ... " << endl;
cout << "... nEvents = " << nEvents << endl;
// Loop over events
for (int i=0; i<nEvents; i++) {
t->getEvent(i);
// Select Type 0 events
if (t->PID != 1) continue;
if (t->Type != 0) continue;
//Cut out clipped events
if ( t->Side==0 && ( t->xE.nClipped>0 || t->yE.nClipped>0 || t->xeRC<1 || t->xeRC>4 || t->yeRC<1 || t->yeRC>4 ) ) continue;
else if ( t->Side==1 && ( t->xW.nClipped>0 || t->yW.nClipped>0 || t->xwRC<1 || t->xwRC>4 || t->ywRC<1 || t->ywRC>4) ) continue;
/*bool moveOnX = true, moveOnY=true; // Determining if the event is of the correct response class in x and y
//Swank addition: Wire Chamber Response class.
for (int j=0; j<numResponseClasses; j++) {
if (t->xeRC == responseClasses[j]) {moveOnX=false;}
if (t->yeRC == responseClasses[j]) {moveOnY=false;}
}