コード例 #1
0
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");
}
コード例 #2
0
ファイル: chanfnc.c プロジェクト: gaorlov/DAAS
void NormalScaleCallback(int menubar, int menuItem, void *callbackData, int panel)
{
    channelPtr chan, newchan;
    double scale, offset;

    chan = channellist_GetSelection();
    newchan = channel_Create();
    if (newchan && channel_AllocMem (newchan, chan->pts))
    {
        Scale1D (chan->readings, chan->pts, newchan->readings, &offset, &scale);
        Fmt (newchan->label, "Scale(%s)", chan->label);
        Fmt (newchan->note, "%s\n%s\noffset: %f[e2p3]\nscale factor: %f[e2p3]\n",
             chan->note, newchan->label, offset, scale);
        channellist_AddChannel (newchan);
    }
}
コード例 #3
0
void Scale1D(char *fTempStr) {
	Scale1D(fTempStr, 0);
}
コード例 #4
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");
}
コード例 #5
0
ファイル: RescaleH.C プロジェクト: peterotte/DataAnalyses
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");
}