void LagrangianAttributes::SetFromNode(DataNode *parentNode) { if(parentNode == 0) return; DataNode *searchNode = parentNode->GetNode("LagrangianAttributes"); if(searchNode == 0) return; DataNode *node; if((node = searchNode->GetNode("seedPoint")) != 0) SetSeedPoint(node->AsDoubleArray()); if((node = searchNode->GetNode("numSteps")) != 0) SetNumSteps(node->AsInt()); if((node = searchNode->GetNode("XAxisSample")) != 0) { // Allow enums to be int or string in the config file if(node->GetNodeType() == INT_NODE) { int ival = node->AsInt(); if(ival >= 0 && ival < 6) SetXAxisSample(sampleType(ival)); } else if(node->GetNodeType() == STRING_NODE) { sampleType value; if(sampleType_FromString(node->AsString(), value)) SetXAxisSample(value); } } if((node = searchNode->GetNode("YAxisSample")) != 0) { // Allow enums to be int or string in the config file if(node->GetNodeType() == INT_NODE) { int ival = node->AsInt(); if(ival >= 0 && ival < 6) SetYAxisSample(sampleType(ival)); } else if(node->GetNodeType() == STRING_NODE) { sampleType value; if(sampleType_FromString(node->AsString(), value)) SetYAxisSample(value); } } if((node = searchNode->GetNode("variable")) != 0) SetVariable(node->AsString()); }
ExplainTuple* PhysSample::addSpecificExplainInfo(ExplainTupleMaster *explainTuple, ComTdb * tdb, Generator *generator) { NAString buffer = "sample_type: "; switch(sampleType()) { case RANDOM: buffer += "RANDOM "; break; case PERIODIC: buffer += "PERIODIC "; break; case FIRSTN: buffer += "FIRST "; break; case CLUSTER: buffer += "CLUSTER "; break; default: buffer += "UNKNOWN "; break; } explainTuple->setDescription(buffer); return(explainTuple); }
int main(int argc, char *argv[]) { if(argc != 4){ std::cout << "Usage: sortForest <inputFile> <sampleType> <#>" << std::endl; return 1; } int rStatus = -1; rStatus = makeWJetAnaSkim(argv[1], sampleType(atoi(argv[2])), atoi(argv[3])); return rStatus; }
void EffectFilter::Filter(sampleCount len, sampleType *buffer) { float *inr = new float[len]; float *ini = new float[len]; float *outr = new float[len]; float *outi = new float[len]; unsigned int i; for(i=0; i<len; i++) inr[i] = buffer[i]/32767.; // Apply window and FFT WindowFunc(3, len, inr); // Hanning window FFT(len, false, inr, NULL, outr, outi); // Apply filter unsigned int half = len/2; for(i=0; i<=half; i++) { int j = len - i; outr[i] = outr[i]*filterFunc[i]; outi[i] = outi[i]*filterFunc[i]; if (i!=0 && i!=len/2) { outr[j] = outr[j]*filterFunc[i]; outi[j] = outi[j]*filterFunc[i]; } } // Inverse FFT and normalization FFT(len, true, outr, outi, inr, ini); for(i=0; i<len; i++) buffer[i] = sampleType(inr[i]*32767); delete[] inr; delete[] ini; delete[] outr; delete[] outi; }
LagrangianAttributes::sampleType LagrangianAttributes::GetYAxisSample() const { return sampleType(YAxisSample); }
void EffectNoiseRemoval::RemoveNoise(sampleCount len, sampleType *buffer) { float *inr = new float[len]; float *ini = new float[len]; float *outr = new float[len]; float *outi = new float[len]; float *power = new float[len]; float *plog = new float[len]; int i; for(i=0; i<len; i++) inr[i] = buffer[i]/32767.; // Apply window and FFT WindowFunc(3, len, inr); // Hanning window FFT(len, false, inr, NULL, outr, outi); for(i=0; i<len; i++) inr[i] = buffer[i]/32767.; WindowFunc(3, len, inr); // Hanning window PowerSpectrum(len, inr, power); for(i=0; i<=len/2; i++) plog[i] = log(power[i]); int half = len/2; for(i=0; i<=half; i++) { float smooth; if (plog[i] < noiseGate[i] + (level/2.0)) smooth = 0.0; else smooth = 1.0; smoothing[i] = smooth * 0.5 + smoothing[i] * 0.5; } /* try to eliminate tinkle bells */ for(i=2; i<=half-2; i++) { if (smoothing[i]>=0.5 && smoothing[i]<=0.55 && smoothing[i-1]<0.1 && smoothing[i-2]<0.1 && smoothing[i+1]<0.1 && smoothing[i+2]<0.1) smoothing[i] = 0.0; } outr[0] *= smoothing[0]; outi[0] *= smoothing[0]; outr[half] *= smoothing[half]; outi[half] *= smoothing[half]; for(i=1; i<half; i++) { int j = len - i; float smooth = smoothing[i]; outr[i] *= smooth; outi[i] *= smooth; outr[j] *= smooth; outi[j] *= smooth; } // Inverse FFT and normalization FFT(len, true, outr, outi, inr, ini); for(i=0; i<len; i++) buffer[i] = sampleType(inr[i]*32767); delete[] inr; delete[] ini; delete[] outr; delete[] outi; delete[] power; delete[] plog; }
void fitSignal(){ std::string shapes_file = "mlfit.root"; std::string data_file = "param_ws.root"; std::string channel = "ch1"; TFile *dfile = TFile::Open(data_file.c_str()); TFile *sfile = TFile::Open(shapes_file.c_str()); TH1F *bkg = (TH1F*)sfile->Get(Form("shapes_fit_b/%s/total",channel.c_str())); TH1F *data = (TH1F*)dfile->Get("SR_data"); // TH1 for data TH1F *signal= (TH1F*)dfile->Get("SR_signal"); // TH1 for signal TH2F *covar = (TH2F*)sfile->Get(Form("shapes_fit_b/%s/total_covar",channel.c_str())); // bkg and covariance defined as pdf / GeV, so scale by bin widhts // int nbins = data->GetNbinsX(); if (!isTH1Input){ for (int b=1;b<=nbins;b++){ double bw = bkg->GetBinWidth(b); bkg->SetBinContent(b,bkg->GetBinContent(b)*bw); for (int j=1;j<=nbins;j++){ covar->SetBinContent(b,j,covar->GetBinContent(b,j)*bw*bw); } } } RooArgList xlist_; RooArgList olist_; RooArgList mu_; bkg->Print() ; covar->Print() ; signal->Print() ; data->Print() ; // Make a dataset (simultaneous) RooCategory sampleType("bin_number","Bin Number"); RooRealVar observation("observed","Observed Events bin",1); // You have to define the samples types first!, because RooFit suuuuucks! for (int b=1;b<=nbins;b++){ sampleType.defineType(Form("%d",b-1),b-1); sampleType.setIndex(b-1); } RooArgSet obsargset(observation,sampleType); RooDataSet obsdata("combinedData","Data in all Bins",obsargset); //obsdata.add(RooArgSet(observation,sampleType)); for (int b=1;b<=nbins;b++){ observation.setVal(data->GetBinContent(b)); sampleType.setIndex(b-1); std::cout << sampleType.getLabel() << ", " << sampleType.getIndex() << std::endl; //RooArgSet localset(observation,sampleType); //obsdata.add(localset); obsdata.add(RooArgSet(observation,sampleType)); std::cout << " Observed at " << b << ", " << observation.getVal() << std::endl; } // make a constraint term for the background, and a RooRealVar for bkg for (int b=1;b<=nbins;b++){ double bkgy = (double)bkg->GetBinContent(b); RooRealVar *mean_ = new RooRealVar(Form("exp_bin_%d_In",b),Form("expected bin %d",b),bkgy); mean_->setConstant(true); RooRealVar *x_ = new RooRealVar(Form("exp_bin_%d",b),Form("bkg bin %d",b),bkgy,0.2*bkgy,bkgy*4); std::cout << " Exp background At " << b << ", " << x_->getVal() << std::endl; xlist_.add(*x_); mu_.add(*mean_); } // constraint PDF for background // Convert TH2 -> TMatrix TMatrixDSym Tcovar(nbins); for (int i=0;i<nbins;i++){ for (int j=0;j<nbins;j++){ //if (i==j)Tcovar[i][j] = covar->GetBinContent(i+1,j+1); //else Tcovar[i][j] = 0; Tcovar[i][j] = covar->GetBinContent(i+1,j+1); } } std::cout<< "Made Covariance" << std::endl; RooMultiVarGaussian constraint_pdf("constraint_pdf","Constraint for background pdf",xlist_,mu_,Tcovar); std::cout<< "Made Covariance Gauss" << std::endl; // Make the signal component RooRealVar r("r","r",1,-5,5); RooArgList signals_; for (int b=1;b<=nbins;b++) { RooProduct *sigF = new RooProduct(Form("signal_%d",b),"signal nominal",RooArgSet(r,RooFit::RooConst(signal->GetBinContent(b)))); std::cout << " Signal At " << b << ", " << sigF->getVal() << std::endl; signals_.add(*sigF); } RooArgList plist_; RooArgList slist_; sampleType.setIndex(1); RooSimultaneous combined_pdf("combined_pdf","combined_pdf",sampleType); for (int b=1;b<=nbins;b++){ RooAddition *sum = new RooAddition(Form("splusb_bin_%d",b),Form("Signal plus background in bin %d",b),RooArgList(*((RooRealVar*)(signals_.at(b-1))),*((RooRealVar*)(xlist_.at(b-1))))); RooPoisson *pois = new RooPoisson(Form("pdf_bin_%d",b),Form("Poisson in bin %d",b),observation,(*sum)); // Who cares about poissons? //RooGaussian *pois = new RooGaussian(Form("pdf_bin_%d",b),Form("Poisson in bin %d",b),observation,(*sum),RooFit::RooConst(TMath::Sqrt(sum->getVal()))); combined_pdf.addPdf(*pois,Form("%d",b-1)); slist_.add(*sum); plist_.add(*pois); } combined_pdf.Print("v"); obsdata.Print("v"); // Make a prodpdf instread RooProdPdf combinedpdfprod("maybefinalpdf","finalpdf",RooArgList(combined_pdf,constraint_pdf)); RooAbsReal *nll_ = combined_pdf.createNLL(obsdata,RooFit::ExternalConstraints(RooArgList(constraint_pdf))); // RooMinimizer m(*nll_); m.minimize("Minuit2","minimize"); // constrained fit! r.setConstant(true); double nllMin = nll_->getVal(); TFile *fout = new TFile("simple.root","RECREATE"); TTree *tree = new TTree("limit","limit"); float deltaNLL_; float r_; tree->Branch("r",&r_,"r/F"); tree->Branch("deltaNLL",&deltaNLL_,"deltaNLL/F"); RooMinimizer mc(*nll_); //combinedpdfprod.fitTo(obsdata); // for(float rv=-2;rv<=2;rv+=0.2){ r.setVal(rv); r_=rv; mc.minimize("Minuit2","minimize"); deltaNLL_ = nll_->getVal() - nllMin; tree->Fill(); } fout->cd(); tree->Write(); fout->Close(); /* RooAbsReal *nll_ = combinedpdfprod.createNLL(obsdata); nll_->Print("v"); // Minimize RooMinimizer m(*nll_); r.setConstant(true); std::cout << combinedpdfprod.getVal() << std::endl; std::cout << constraint_pdf.getVal() << std::endl; //m.Print(); m.minimize("Minuit2","minimize"); */ }