MultiPackedWord::MultiPackedWord(const size_t numBits, const FieldType& fieldType, const ::std::string& name) : VariableArray(), numBits_(numBits), fieldType_(fieldType) { size_t packedSize = getMultipackedSize(); VariableArray varArray(packedSize, name); VariableArray::swap(varArray); }
Bool_t KernelDensity::readTuple(TTree* tree, std::vector<TString> &vars, UInt_t maxEvents) { if (vars.size() != m_phaseSpace->dimensionality() ) { printf("%20.20s ERROR: Number of TTree variables (%d) in tree \"%s\" does not correspond to phase space dimensionality (%d)\n", m_name, (UInt_t)vars.size(), tree->GetName(), m_phaseSpace->dimensionality() ); abort(); } UInt_t nvars = vars.size(); tree->ResetBranchAddresses(); Long64_t nentries = tree->GetEntries(); if (maxEvents > 0 && maxEvents < nentries) nentries = maxEvents; Long64_t i; std::vector<Float_t> varArray(nvars); UInt_t n; for (n=0; n < nvars; n++) { printf("%20.20s INFO: Will read branch \"%s\" from tree \"%s\"\n", m_name, vars[n].Data(), tree->GetName()); Int_t status = tree->SetBranchAddress(vars[n], &( varArray[n] )); if (status < 0) { printf("%20.20s WARNING: Error setting branch, status=%d\n", m_name, status); abort(); } } std::vector<Double_t> point(nvars); UInt_t cells = numCells(); m_dataVector.resize(cells); Int_t cell; for (cell = 0; cell < (Int_t)cells; cell++) { m_dataVector[cell].reserve(nentries/cells); } UInt_t nout = 0; for(i=0; i<nentries; i++) { // printf("DEBUG: before: %f\n", varArray[0]); tree->GetEntry(i); // printf("DEBUG: after: %f\n", varArray[0]); for (n=0; n<nvars; n++) { point[n] = varArray[n]; } if (!m_phaseSpace->withinLimits( point )) { nout ++; printf("%20.20s WARNING: Ntuple point (", m_name); for (n=0; n<nvars; n++) { printf("%f ", point[n]); } printf(", %f%%) outside phase space\n", 100.*float(nout)/float(i)); } else { cell = cellIndex( point ); if (cell>=0) m_dataVector[cell].push_back(point); } if (i % 10000 == 0) { printf("%20.20s INFO: Read %lld/%lld events (%f%%)\n", m_name, i, nentries, 100.*float(i)/float(nentries)); } } printf("%20.20s INFO: %lld events read in from \"%s\"\n", m_name, nentries-nout, tree->GetName() ); return 1; }