Пример #1
0
void SphereSampler::generateSamples(float, float)
{
	clearSamples();
	increaseSampleCount();
	Sample tempSample;
	bool rejectionSampling = false;
	bool sampleFound = false;
	float x = 0.0f;
	float y = 0.0f;
	float z = 0.0f;
	float r = 0.0f;
	
	for (int i = 0; i < getCurrentSampleCount(); i++)
	{
		if (rejectionSampling)
		{
			while (true)
			{
				x = 2.0f * getRandomNumber(0,1) - 1.0f;
				y = 2.0f * getRandomNumber(0,1) - 1.0f;
				z = 2.0f * getRandomNumber(0,1) - 1.0f;
				if ((x*x + y*y + z*z) <= 1)
					break;
			}
			x *= radius;
			y *= radius;
			z *= radius;
			/*while (!sampleFound)
			{
				x = static_cast<float>(rand()) / static_cast<float>(RAND_MAX);
				y = static_cast<float>(rand()) / static_cast<float>(RAND_MAX);
				z = static_cast<float>(rand()) / static_cast<float>(RAND_MAX);
				if ((x*x + y*y + z*z) <= (radius *radius))
					sampleFound = true;;
			}
			sampleFound = false;*/
			tempSample.setOffset(Point3(x, y, z));
		}
		
		/*	? = 2?r1
			? = acos(1 – 2r2)
			x = cx + 2Rcos(2?r1) r2(1 – r2)
			y = cy + 2Rsin(2?r1) r2(1 – r2)
			z = cz + R(1 – 2r2)
		*/
		else
		{
			float r1 = getRandomNumber(0, 1);
			float r2 = getRandomNumber(0, 1);
			/*float phi = 2 * M_PI * r1;
			float theta = acos(1 - (2 * r2));*/
			Point3 offset;
			offset.x = 2 * radius * cos(2 * M_PI * r1) * sqrt(r2*(1 - r2));
			offset.y = 2 * radius * sin(2 * M_PI * r1) * sqrt(r2*(1 - r2));
			offset.z = radius * (1 - (2 * r2));
			tempSample.setOffset(offset);
		}
		addSampleToList(tempSample);
	}
}
Пример #2
0
void PuReader::readNextPu()
{
  clearSamples();
  readHeader();
  initSamples();
  readSamples();
}
Пример #3
0
void CircleSampler::generateSamples(float, float)
{
	clearSamples();
	increaseSampleCount();	
	Sample tempSample;
	for (int i = 0; i < getCurrentSampleCount(); i++)
	{
		float sampleRadius = sqrt(getRandomNumber(0,radius));
		float theta = getRandomNumber(0, 360);
		tempSample.setOffset(getCoordinateOnCircle(sampleRadius, theta));
		/*Point3 tempTargetPosition = targetPosition + tempSample.getOffset();
		tempSample.setRay(Ray(sampleOrigin, tempTargetPosition - sampleOrigin));*/
		addSampleToList(tempSample);
	}
}
Пример #4
0
void RandomSampler::generateSamples(float pixelIndexAlongWidth, float pixelIndexAlongHeight)
{
	clearSamples();
	increaseSampleCount();
	Point3 tempOffset;
	Sample tempSample;
	for (int i = 0; i < getCurrentSampleCount(); ++i)
	{
		tempOffset.x = 2 * getRandomNumber(0, 1) - 1;
		tempOffset.y = 2 * getRandomNumber(0, 1) - 1;
		tempOffset.z = 2 * getRandomNumber(0, 1) - 1;
		tempSample.setRay(calculatePixelCoords(pixelIndexAlongWidth, pixelIndexAlongHeight, tempOffset));
		tempSample.setColor(Color(0.0f));
		addSampleToList(tempSample);
	}	
}
Пример #5
0
void  drawDelphes1(TString plotsToMake="all") {


    initSamples();
    setOutputDirectory("Delphes1");

    int nbins;
    float low,high;
    TString var,xtitle;

    doOverflowAddition(true);
    doRatio_=false;

    //normalize to unit area
    setStackMode(false,true,false); //stack,norm,label override
    stackSignal_=false;

    selection_ = "(1)"; //no cuts!
    nbins=40;
    low=0;
    high=1000;
    var="MET";
    xtitle="MET (GeV)";
    if (plotsToMake.Contains("all")||plotsToMake.Contains("001"))  drawPlots(var,nbins,low,high,xtitle,"Events", "MET",0,"GeV");

    selection_ = "(1)"; //no cuts!
    nbins=50;
    low=0;
    high=3000;
    var="HT";
    xtitle="HT (GeV)";
    if (plotsToMake.Contains("all")||plotsToMake.Contains("002"))   drawPlots(var,nbins,low,high,xtitle,"Events", "HT",0,"GeV");

    selection_ = "(1)"; //no cuts!
    nbins=14;
    low=0;
    high=14;
    var="njets40";
    xtitle="njets (40 GeV)";
    if (plotsToMake.Contains("all")||plotsToMake.Contains("003"))  drawPlots(var,nbins,low,high,xtitle,"Events", "njets40",0,"");

    selection_ = "(1)"; //no cuts!
    nbins=6;
    low=0;
    high=6;
    var="nbjets40tight";
    xtitle="n tight b jets (40 GeV)";
    if (plotsToMake.Contains("all")||plotsToMake.Contains("004"))   drawPlots(var,nbins,low,high,xtitle,"Events", "nTbjets40",0,"");

    selection_ = "(1)"; //no cuts!
    nbins=50;
    low=0;
    high=2000;
    var="MT2";
    xtitle="MT2 (GeV)";
    if (plotsToMake.Contains("all")||plotsToMake.Contains("005"))   drawPlots(var,nbins,low,high,xtitle,"Events", "MT2",0,"GeV");

    //edge selection cuts
    TCut dileptons="mll>20";
    TCut sf = "isSF==1";
    TCut jetsloose = "njets30eta3p0>=2";
    TCut jetstight = "njets30eta3p0>=3";
    TCut metloose = "MET>100";
    TCut mettight = "MET>150";

    selection_ = dileptons&&sf&&jetsloose&&mettight; //Edge selection 1
    nbins=60;
    low=0;
    high=300;
    var="mll";
    xtitle="m_{l+l-} (GeV)";
    if (plotsToMake.Contains("all")||plotsToMake.Contains("006"))   drawPlots(var,nbins,low,high,xtitle,"Events", "edge_sel1_mll",0,"GefV");

    //same plot, zoom on low mass region
    nbins=100;
    low=0;
    high=100;
    var="mll";
    xtitle="m_{l+l-} (GeV)";
    if (plotsToMake.Contains("all")||plotsToMake.Contains("012"))   drawPlots(var,nbins,low,high,xtitle,"Events", "edge_sel1_mll_zoom",0,"GeV");

    if (plotsToMake=="013") {//not compatible with other plots
        clearSamples();
        addSample("susyhit_slhaScenario1_v02",kRed,"Scenario 1");
        drawPlots(var,nbins,low,high,xtitle,"Events", "edge_sel1_mll_zoom_sigonly",0,"GeV");

        nbins=100;
        low=0;
        high=500;
        drawPlots(var,nbins,low,high,xtitle,"Events", "edge_sel1_mll_wide_sigonly",0,"GeV");

        selection_ = dileptons&&!sf&&jetsloose&&mettight; //sanity check -- veto SF
        drawPlots(var,nbins,low,high,xtitle,"Events", "edge_sel1_mllOF_zoom_sigonly",0,"GeV");


    }

    //also show with 'real' normalization
    setStackMode(true,false,false); //stack,norm,label override
    stackSignal_=false;
    if (plotsToMake.Contains("all")||plotsToMake.Contains("007"))   drawPlots(var,nbins,low,high,xtitle,"Events", "edge_sel1_mll",0,"GeV");

    setStackMode(false,true,false); //stack,norm,label override
    selection_ = dileptons&&sf&&jetstight&&metloose; //Edge selection 2
    nbins=50;
    low=0;
    high=300;
    var="mll";
    xtitle="m_{l+l-} (GeV)";
    if (plotsToMake.Contains("all")||plotsToMake.Contains("008"))   drawPlots(var,nbins,low,high,xtitle,"Events", "edge_sel2_mll",0,"GeV");

    //also show with 'real' normalization
    setStackMode(true,false,false); //stack,norm,label override
    stackSignal_=false;
    if (plotsToMake.Contains("all")||plotsToMake.Contains("009"))   drawPlots(var,nbins,low,high,xtitle,"Events", "edge_sel2_mll",0,"GeV");

    //now try a hadronic analysis selection
    TCut noleptons = "nElectrons==0 && nMuons==0";
    TCut ht600 = "HT>=600";
    TCut jets="njets40>=3";
    selection_=noleptons && ht600 && metloose && jets;

    nbins=40;
    low=0;
    high=800;
    var="MT2";
    xtitle="MT2 (GeV)";
    setStackMode(false,true,false); //stack,norm,label override
    if (plotsToMake.Contains("all")||plotsToMake.Contains("010"))   drawPlots(var,nbins,low,high,xtitle,"Events", "hadronic_presel_MT2",0,"GeV");
    setStackMode(true,false,false); //stack,norm,label override
    if (plotsToMake.Contains("all")||plotsToMake.Contains("011"))   drawPlots(var,nbins,low,high,xtitle,"Events", "hadronic_presel_MT2",0,"GeV");

    //try an MT2 cut instead?
    TCut mt2baseline = "MT2>=200";
    selection_=noleptons&&ht600&&jets&&mt2baseline;
    nbins=40;
    low=0;
    high=2000;
    var="HT";
    xtitle="HT (GeV)";
    setStackMode(false,true,false); //stack,norm,label override
    if (plotsToMake.Contains("all")||plotsToMake.Contains("014"))   drawPlots(var,nbins,low,high,xtitle,"Events", "hadronic_mt2sel_HT",0,"GeV");
    setStackMode(true,false,false); //stack,norm,label override
    if (plotsToMake.Contains("all")||plotsToMake.Contains("014"))   drawPlots(var,nbins,low,high,xtitle,"Events", "hadronic_mt2sel_HT",0,"GeV");


    //cut much tighter on HT and plot MT2
    TCut tighterht = "HT>1500";
    selection_ = noleptons && tighterht && jets && mt2baseline;
    //plot MT2 and njets
    nbins=40;
    low=0;
    high=2000;
    var="MT2";
    xtitle="MT2 (GeV)";
    setStackMode(false,true,false); //stack,norm,label override
    if (plotsToMake.Contains("all")||plotsToMake.Contains("015"))   drawPlots(var,nbins,low,high,xtitle,"Events", "hadronic_mt2sel2_MT2",0,"GeV");
    setStackMode(true,false,false); //stack,norm,label override
    if (plotsToMake.Contains("all")||plotsToMake.Contains("015"))   drawPlots(var,nbins,low,high,xtitle,"Events", "hadronic_mt2sel2_MT2",0,"GeV");

    nbins=12;
    low=0;
    high=12;
    var="njets40";
    xtitle="njets40 (GeV)";
    setStackMode(false,true,false); //stack,norm,label override
    if (plotsToMake.Contains("all")||plotsToMake.Contains("015"))   drawPlots(var,nbins,low,high,xtitle,"Events", "hadronic_mt2sel2_njets40",0,"GeV");
    setStackMode(true,false,false); //stack,norm,label override
    if (plotsToMake.Contains("all")||plotsToMake.Contains("015"))   drawPlots(var,nbins,low,high,xtitle,"Events", "hadronic_mt2sel2_njets40",0,"GeV");

    //tighter further!
    TCut tightermt2 = "MT2>350";
    TCut tighterjets = "njets40>=8";
    selection_ = noleptons&&TCut("HT>1000")&&tightermt2&&tighterjets;
    //plot HT again
    nbins=40;
    low=1000;
    high=3000;
    var="HT";
    xtitle="HT (GeV)";

    setStackMode(true,false,false); //stack,norm,label override
    customDivisionsVal_ = 505;
    customDivisions_=true;
    if (plotsToMake.Contains("all")||plotsToMake.Contains("016"))   drawPlots(var,nbins,low,high,xtitle,"Events", "hadronic_mt2sel3_HT",0,"GeV");
    customDivisions_=false;
    //ok, now we're getting somewhere!

    TCut ht2000="HT>2000";
    selection_ = noleptons && ht2000 && tightermt2 && tighterjets;
    //nbjets
    nbins=9;
    low=0;
    high=9;
    var="nbjets40tight";
    xtitle="n tight b tags";
    setStackMode(true,false,false); //stack,norm,label override
    if (plotsToMake.Contains("all")||plotsToMake.Contains("017"))   drawPlots(var,nbins,low,high,xtitle,"Events", "hadronic_mt2sel4_nbjets",0,"");
    //ntaus
    nbins=3;
    low=0;
    high=3;
    var="nTaus";
    xtitle="n tau tags";
    setStackMode(true,false,false); //stack,norm,label override
    if (plotsToMake.Contains("all")||plotsToMake.Contains("017"))   drawPlots(var,nbins,low,high,xtitle,"Events", "hadronic_mt2sel4_ntaus",0,"");
    setStackMode(false,true,false); //stack,norm,label override
    if (plotsToMake.Contains("all")||plotsToMake.Contains("017"))   drawPlots(var,nbins,low,high,xtitle,"Events", "hadronic_mt2sel4_ntaus",0,"");
    //and MT2
    setStackMode(true,false,false); //stack,norm,label override
    selection_ = noleptons && ht2000 && TCut("MT2>250") && tighterjets;
    nbins=65;
    low=250;
    high=1000;
    var="MT2";
    xtitle="MT2 (GeV)";
    if (plotsToMake.Contains("all")||plotsToMake.Contains("017"))   drawPlots(var,nbins,low,high,xtitle,"Events", "hadronic_mt2sel4_mt2",0,"GeV");

    //try a 2d plot
    selection_ = noleptons && TCut("HT>800") && TCut("MT2>200") && tighterjets;
    if (plotsToMake.Contains("all")||plotsToMake.Contains("018"))
        draw2d("MT2",15,200,500,"HT",15,800,3000,"MT2","HT", "hadronic_mt2sel5_mt2Vht",0,0,"susyhit_slhaScenario1_v02");


}
Пример #6
0
CuReconReader::~CuReconReader()
{
  clearSamples();
}