Index: trunk/MagicSoft/Mars/macros/PedCalcFromData.C
===================================================================
--- trunk/MagicSoft/Mars/macros/PedCalcFromData.C	(revision 4356)
+++ trunk/MagicSoft/Mars/macros/PedCalcFromData.C	(revision 4356)
@@ -0,0 +1,200 @@
+
+/////////////////////////////////////////////////////////////////////////////
+//                                                                         //
+// Description: Macro that uses MPedCalcFromData to evaluate Pedestals from//
+//              Data Runs.                                                 //
+// Author:      Josep Flix (jflix@ifae.es)                                 //
+// Date:        25/06/2004                                                 //
+//                                                                         // 
+/////////////////////////////////////////////////////////////////////////////
+
+void PedCalcFromData()
+{
+
+    gROOT->Reset();
+    gStyle->SetCanvasColor(0);
+    gStyle->SetCanvasBorderMode(0);
+    gStyle->SetPadBorderMode(0);
+    gStyle->SetFrameBorderMode(0);
+    gStyle->SetOptStat(0000000);
+    gStyle->SetPalette(1);
+
+    TString pedfile("20040422_23229_P_Mrk421_E.root");
+    TString datafile("20040422_23230_D_Mrk421_E.root");
+    
+    gStyle->SetOptFit(0);
+    gStyle->SetOptStat(0000);
+    
+    MParList       plist;
+    MTaskList      tlist;
+    
+    MPedestalCam   cam;  
+    plist.AddToList(&cam);
+    
+    plist.AddToList(&tlist);
+    
+    MReadMarsFile read("Events", "/home/pepe/DATA_REAL/Mkn421/"+pedfile);
+    read.DisableAutoScheme();    
+    MGeomApply      geomapl;
+    MExtractFixedWindow    extractor;   
+    extractor.SetRange(2,14,4,14);
+   
+    MPedCalcPedRun ped;
+    ped.SetWindowSize(12);
+    ped.SetRange(2,14);
+    
+    tlist.AddToList(&read);
+    tlist.AddToList(&geomapl);
+    tlist.AddToList(&ped); 
+    
+    MEvtLoop evtloop;
+    
+    if (!tlist.PreProcess(&plist))
+	return;
+    
+    while (tlist.Process())
+    {
+    }
+    tlist.PostProcess();     
+    
+    
+    // ---------------------------------------------------------------
+    // 2nd evt loop
+    // ---------------------------------------------------------------
+
+    c1 = new TCanvas("c1","c1",0,0,600,300);
+    c1->Divide(2,1);
+    c1->SetBorderMode(0);
+    
+    TH2D *plot1 = new TH2D("","",1,0.1,175000,1,8,15);
+    TH2D *plot2 = new TH2D("","",1,0.1,175000,1,1,40);
+    c1->cd(1);
+    plot1->Draw();
+    c1->cd(2);
+    plot2->Draw();
+
+    Int_t COUNT=0;
+    
+    for (int j = 0; j < 6 ; j++){
+
+	if (j == 1)
+	    TString datafile("20040422_23231_D_Mrk421_E.root");
+	if (j == 2)
+	    TString datafile("20040422_23233_D_Mrk421_E.root");
+	if (j == 3)
+	    TString datafile("20040422_23234_D_Mrk421_E.root");
+	if (j == 4)
+	    TString datafile("20040422_23236_D_Mrk421_E.root");
+	if (j == 5)
+	    TString datafile("20040422_23237_D_Mrk421_E.root");
+
+	MParList  plist2;
+	MTaskList tlist2;
+	plist2.AddToList(&tlist2);
+	plist2.AddToList(&cam);
+	
+	MGeomCam *geomcam = (MGeomCam*)plist->FindObject("MGeomCam");
+	
+	MReadMarsFile read2("Events");
+	read2.DisableAutoScheme();
+    
+	read2.AddFile("/home/pepe/DATA_REAL/Mkn421/"+datafile);
+	MGeomApply        apply2;
+	
+	MPedCalcFromData  ped2;
+	ped2.SetDumpEvents(500);
+	ped2.SetLoRange(2,14);
+	ped2.SetHighGainThreshold(50);
+	
+	tlist2.AddToList(&read2);
+	tlist2.AddToList(&apply2);
+	tlist2.AddToList(&ped2);
+	
+	MEvtLoop evtloop2;
+	evtloop2.SetParList(&plist2);
+	
+	if (!tlist2.PreProcess(&plist2))
+	    return;
+	
+	TArrayD PedMean[577];
+	TArrayD PedRms[577];
+	for (int i = 0; i < 577 ; i++){
+	    PedMean[i].Set(20001);
+	    PedRms[i].Set(20001);
+	};
+	Double_t x[20001];
+	Double_t y[20001];
+	Int_t Cont = 0;
+	Int_t HOT = 0;
+	
+	while (tlist2.Process())
+	{
+	    
+	    COUNT++;
+	    
+	    if (read2.GetNumExecutions()==1 || read2.GetNumExecutions()%500==0){
+		
+		x[Cont] = COUNT;
+		for (int i = 1; i < 577; i++){
+		    
+		    PedMean[i](Cont) = cam[i]->GetPedestal();
+		    PedRms[i](Cont) = cam[i]->GetPedestalRms();
+		    
+		};
+		Cont++;
+	    };
+//         if (read2.GetNumExecutions() == 5000) break;
+	}
+	
+	tlist2.PostProcess();
+	cout << "EXEC = " << read2.GetNumExecutions() << '\t' << HOT << endl;
+	
+	for (int i = 1; i < 577; i++){
+	    
+	    if ( i == 8 || i ==146 || i ==200 || i ==269 || i==279 || i==400 || i==26 || i==439 || i==490 || i==39){
+		
+		for (int k = 0 ; k < 20000; k++)
+		    y[k] = PedMean[i](k);
+		
+		c1->cd(1);
+		
+		TGraph *graph1 = new TGraph(Cont,x,y);
+		graph1->SetLineColor((int)i/3);
+		graph1->SetMarkerColor((int)i/3);
+		graph1->SetMarkerSize(.4);
+		graph1->SetMarkerStyle(20);
+		graph1->Draw("PL");
+		
+		c1->cd(2);
+		for (int k = 0 ; k < 20000; k++)
+		    y[k] = PedRms[i](k);
+		
+		TGraph *graph2 = new TGraph(Cont,x,y);
+		graph2->SetMarkerSize(.4);
+		graph2->SetLineColor((int)i/3);
+		graph2->SetMarkerStyle(20);
+		graph2->SetMarkerColor((int)i/3);
+		graph2->Draw("PL");
+		
+		Char_t tit[100];
+		sprintf(tit,"Pixel %i",i);
+		TLatex *pix = new TLatex(20000.,38.-1.*HOT,tit);
+		pix->SetTextColor((int)i/3);
+		pix->SetTextSize(.03);
+		pix->Draw("");
+		HOT++;
+	    };
+	    
+	};
+	
+	TLine *line2 = new TLine(x[Cont-1],1.,x[Cont-1],40.);
+	line2->SetLineStyle(2);
+	TLine *line1 = new TLine(x[Cont-1],8.,x[Cont-1],15.);
+	line1->SetLineStyle(2);
+	c1->cd(1);
+	line1->Draw("");
+	c1->cd(2);
+	line2->Draw("");
+	
+    };    
+}
