void H_ET_Subtraction() { //Connect to all existing histograms RootFileFT = new TFile(Str_RootFilesHResultsFT); double SumFT = ((TH1D*)(gROOT->FindObject("PhotonFluxLTCorrected")))->Integral(); RootFileET = new TFile(Str_RootFilesHResultsET); double SumET = ((TH1D*)(gROOT->FindObject("PhotonFluxLTCorrected")))->Integral(); RootFile2 = new TFile(Str_RootFilesResultsSignal, "RECREATE"); printf("Total Photonflux: %f\t%f\n", SumFT, SumET); ScaleFactor = SumFT / SumET; printf("Scale by: %f\n", ScaleFactor); Scale1D("MesonInvariantMass"); Scale2D("MissingMassCombinedSignal", ScaleFactor); Scale1D("CountNumberOfHistos"); Scale1D("hDroppedEvents"); Scale1D("TaggerScalerAccum"); Scale2D("hTaggerTime"); Scale1D("LiveTimeAccum"); Scale2D("MissingMassCombinedSignalLTCorrected", ScaleFactor); Scale1D("TaggerScalerAccumLTCorrected"); Scale1D("PhotonFluxLTCorrectedWOTaggEff"); Scale1D("PhotonFluxLTCorrected"); Scale2D("TaggEffAbsAll"); RootFileFT->Close(); RootFileET->Close(); RootFile2->Write(); RootFile2->Close(); printf("Finished.\n"); }
void Scale2D(char *fTempStr) { Scale2D(fTempStr, 0); }
int CombineButPMScaled() { //Connect to all existing histograms RootFileP = new TFile(Str_RootFilesButResultsP); TH1D *hP = (TH1D*)gROOT->FindObject("PhotonFluxLTCorrected"); double SumP = hP->Integral(); RootFileM = new TFile(Str_RootFilesButResultsM); TH1D *hM = (TH1D*)gROOT->FindObject("PhotonFluxLTCorrected"); double SumM = hM->Integral(); ScaleFactor = SumM/SumP; printf("Scale by: %f\n", ScaleFactor); // gROOT->cd(); RootFile2 = new TFile(Str_RootFilesResultsSignal, "RECREATE"); TH1D *hDiff = hM->Clone("PhotonFluxRatioT"); hDiff->Divide(hP); if (DebugOptionScaleTargetMinusBeamtime) { printf("WARNING: Debug Option active: Scale Target Minus Beamtime.\n"); ScaleFactor = ScaleFactor * ScaleTargetMinusBeamtime; hDiff->Scale(ScaleTargetMinusBeamtime); printf("Now: Scale by: %f\n", ScaleFactor); } if (DebugOptionAllChannelsRatioEqual) { printf("WARNING: Debug Option active: Flux Ratio is set to 1 for channels.\n"); for (int i=1;i<=(hDiff->GetNbinsX());i++) { hDiff->SetBinContent(i,ScaleFactor); hDiff->SetBinError(i,0); } } //hDiff->Draw(); Scale2D("MissingMassCombinedSignal", hDiff); CopyElement("CountNumberOfHistos"); Scale1DSimple("hDroppedEvents", ScaleFactor); Scale1D("TaggerScalerAccum", hDiff); Scale2D("hTaggerTime", hDiff); Scale1DSimple("LiveTimeAccum", ScaleFactor); Scale2D("MissingMassCombinedSignalLTCorrected", hDiff); Scale2D("MissingMassCombinedSignalLTCorrectedFPrimeP", hDiff); Scale2D("MissingMassCombinedSignalLTCorrectedFPrimeM", hDiff); Scale2D("MissingMassCombinedSignalLTCorrectedTPrimeP", hDiff); Scale2D("MissingMassCombinedSignalLTCorrectedTPrimeM", hDiff); Scale1D("TaggerScalerAccumLTCorrectedInclDroppedEvents", hDiff); Scale1D("TaggerScalerAccumLTCorrected", hDiff); Scale1D("PhotonFluxLTCorrectedWOTaggEff", hDiff); Scale1D("PhotonFluxLTCorrected", hDiff); Scale2D("BeamPol", hDiff); Scale2D("TargetPolFPrime", hDiff); Scale2D("TargetPolTPrime", hDiff); Scale2D("TaggEffAbsTPrime", hDiff); Scale2D("TaggEffAbsFPrime", hDiff); Scale2D("TaggEffAbsAll", hDiff); //gROOT->cd(); TH1D *hDiffAfter = hP->Clone("PhotonFluxRatioTAfter"); hDiffAfter->Divide(hM); hDiffAfter->SetLineColor(kRed); //hDiffAfter->Draw("same"); RootFileP->Close(); RootFileM->Close(); RootFile2->Write(); RootFile2->Close(); printf("Finished.\n"); }
void RescaleH() { Char_t Name[256]; Char_t *VarName; TH1D *h1PhotonFluxBut, *h1PhotonFluxH; TH1D *h1PhotonFluxCorrection; //Connect to all existing histograms RootFileButHistograms = new TFile(Str_RootFilesButResults); h1PhotonFluxBut = (TH1D*)gROOT->FindObject("PhotonFluxLTCorrected"); RootFileHHistograms = new TFile(Str_RootFilesHResults); h2TempH = (TH2D*)gROOT->FindObject("MissingMassCombinedSignalLTCorrected"); h1PhotonFluxH = (TH1D*)gROOT->FindObject("PhotonFluxLTCorrected"); //Calculate RootFileHHistograms_Rescaled = new TFile(Str_RootFilesHResults_Rescaled,"RECREATE"); //Ratio of Photon Flux betwen Combined But and H TH1D *hFluxRatio = (TH1D*)h1PhotonFluxBut->Clone("PhotonFluxRatio"); hFluxRatio->Divide(h1PhotonFluxH); for (int i=1;i<=(hFluxRatio->GetNbinsX());i++) { if (hFluxRatio->GetBinContent(i) > 1E3) { hFluxRatio->SetBinContent(i,0); hFluxRatio->SetBinError(i,0); } } TF1 *AverageRatioFit = new TF1("AvgRatioFit","[0]",0,351); TFitResultPtr MyFitResult = hFluxRatio->Fit("AvgRatioFit", "0qFUW"); //0 = do not draw, q=quiet, R = respect range, f = special min finder, W=Set all weights to 1 for non empty bins; ignore error bars Int_t MyFitStatus = MyFitResult; //0 = alles okay, 4 fehler beim Fit, -1 = no data, //see: http://root.cern.ch/root/html/TH1.html#TH1:Fit%1 double AverageRatio = 0; if (MyFitStatus == 0) { AverageRatio = AverageRatioFit->GetParameter(0); printf("Flux Ratio Fit result: %f +- %f\n", AverageRatioFit->GetParameter(0), AverageRatioFit->GetParError(0)); } else { printf("ERROR: Fit did not converge.\n"); } double ScaleFactor = 1/AverageRatio; hFluxRatio->Scale(ScaleFactor); if (DebugOptionAllChannelsRatioEqual) { printf("WARNING: Debug Option active: Flux Ratio is set to 1 for channels.\n"); for (int i=1;i<=(hFluxRatio->GetNbinsX());i++) { hFluxRatio->SetBinContent(i,1); hFluxRatio->SetBinError(i,0); } } //Now Rescale the H-Results individually Scale2D("MissingMassCombinedSignal", hFluxRatio); CopyElement("CountNumberOfHistos"); CopyElement("hDroppedEvents"); Scale1D("TaggerScalerAccum", hFluxRatio); Scale2D("hTaggerTime", hFluxRatio); CopyElement("LiveTimeAccum"); Scale2D("MissingMassCombinedSignalLTCorrected", hFluxRatio); Scale1D("TaggerScalerAccumLTCorrected", hFluxRatio); Scale1D("PhotonFluxLTCorrectedWOTaggEff", hFluxRatio); Scale1D("PhotonFluxLTCorrected", hFluxRatio); CopyElement("TaggEffAbsAll"); RootFileHHistograms_Rescaled->Write(); RootFileButHistograms->Close(); RootFileHHistograms->Close(); RootFileHHistograms_Rescaled->Close(); printf("Finished.\n"); }
void Painter::Scale(double scale) { Transform(Scale2D(scale)); }
void Painter::Scale(double scalex, double scaley) { Transform(Scale2D(scalex, scaley)); }