Index: trunk/MagicSoft/Simulation/Detector/Camera/camera.cxx
===================================================================
--- trunk/MagicSoft/Simulation/Detector/Camera/camera.cxx	(revision 441)
+++ trunk/MagicSoft/Simulation/Detector/Camera/camera.cxx	(revision 502)
@@ -21,7 +21,7 @@
 //
 // $RCSfile: camera.cxx,v $
-// $Revision: 1.13 $
+// $Revision: 1.14 $
 // $Author: magicsol $ 
-// $Date: 2000-10-25 08:14:23 $
+// $Date: 2001-01-15 12:33:34 $
 //
 ////////////////////////////////////////////////////////////////////////
@@ -57,8 +57,12 @@
 #include "TCanvas.h"
 
+#include "TArrayC.h"
+
 #include "MTrigger.hxx"
 #include "MFadc.hxx"
 
-#include "MRawEvt.h"
+#include "MRawEvtData.h"
+#include "MRawEvtHeader.h"
+#include "MRawCrateData.h"
 #include "MMcEvt.h"
 #include "MMcTrig.hxx"
@@ -224,7 +228,8 @@
 
 //@: Properties of the trigger
-static float Trigger_gate_length = 3.0;
+static float Trigger_gate_length = 6.0;
 static float Trigger_response_ampl = 1.0;
 static float Trigger_response_fwhm = 2.0;
+static float Trigger_overlaping_time= 0.25;
 
 //@: Trigger conditions for a single trigger mode
@@ -448,5 +453,5 @@
   float fpixelthres[TRIGGER_PIXELS];
 
-  float fadcValues[(Int_t) SLICES_MFADC];  //@< the analog Fadc siganl for pixels
+  TArrayC *fadcValues;  //@< the analog Fadc siganl for pixels
 
   float plateScale_cm2deg;    //@< plate scale (deg/cm)
@@ -535,5 +540,5 @@
   Trigger_Scan = get_Trigger_Scan();
 
-  get_Trigger_properties( &Trigger_gate_length, &Trigger_response_ampl, &Trigger_response_fwhm);
+  get_Trigger_properties( &Trigger_gate_length, &Trigger_overlaping_time, &Trigger_response_ampl, &Trigger_response_fwhm);
 
   Trigger_Loop = get_Trigger_Loop(&Trigger_loop_lthres, &Trigger_loop_uthres, &Trigger_loop_lmult, &Trigger_loop_umult, &Trigger_loop_ltop, &Trigger_loop_utop);
@@ -677,4 +682,6 @@
 
   Int_t Lev0, Lev1, Lev2 ; 
+  
+  fadcValues =  new TArrayC(FADC_SLICES);
 
   // initialise ROOT
@@ -684,5 +691,6 @@
   // initialise instance of Trigger and FADC classes
 
-  MTrigger  Trigger(Trigger_gate_length, Trigger_response_ampl, Trigger_response_fwhm);         //@< A instance of the Class MTrigger 
+  MTrigger  Trigger(Trigger_gate_length, Trigger_overlaping_time,
+		    Trigger_response_ampl, Trigger_response_fwhm);  //@< A instance of the Class MTrigger 
 
   //  Initialise McTrig information class if we want to save trigger informtion
@@ -711,11 +719,25 @@
   // Prepare the raw data output
 
-  MRawEvt **Evt;
+       // Header file
+
+  MRawEvtHeader **EvtHeader;
 
   if (Write_RawEvt) {
-    Evt = new MRawEvt * [icontrigger]; 
+    EvtHeader = new MRawEvtHeader * [icontrigger]; 
 
     for (i=0;i<icontrigger;i++) {
-      Evt[i] = new MRawEvt();
+      EvtHeader[i] = new MRawEvtHeader();
+    }
+  }
+
+       // Header file
+
+  MRawEvtData **EvtData;    // Data branch
+
+  if (Write_RawEvt) {
+    EvtData = new MRawEvtData * [icontrigger]; 
+
+    for (i=0;i<icontrigger;i++) {
+      EvtData[i] = new MRawEvtData();
     }
   }
@@ -800,6 +822,8 @@
     
     if (Write_RawEvt){
-      EvtTree.Branch("MRawEvt","MRawEvt", 
-		     &Evt[0], bsize, split);
+      EvtTree.Branch("MRawEvtHeader","MRawEvtHeader", 
+      	     &EvtHeader[0], bsize, split);
+      EvtTree.Branch("MRawEvtData","MRawEvtData", 
+		     &EvtData[0], bsize, split);
     }
     if (Write_McTrig){
@@ -823,12 +847,21 @@
 
   if (Trigger_Loop && Write_RawEvt){
-    for(char branchname[10],i=0;i<icontrigger;i++){
+    for(char branchname[15],i=0;i<icontrigger;i++){
       
       sprintf(help,"%i",i+1);
-      strcpy (branchname, "MRawEvt");
+      strcpy (branchname, "MRawEvtHeader");
       strcat (branchname, & help[0]);
       strcat (branchname, ".");
-      EvtTree.Branch(branchname,"MRawEvt", 
-		     &Evt[i], bsize, split);
+      EvtTree.Branch(branchname,"MRawEvtHeader", 
+		     &EvtHeader[i], bsize, split);
+    }
+    for(char branchname[15],i=0;i<icontrigger;i++){
+      
+      sprintf(help,"%i",i+1);
+      strcpy (branchname, "MRawEvtData");
+      strcat (branchname, & help[0]);
+      strcat (branchname, ".");
+      EvtTree.Branch(branchname,"MRawEvtData", 
+		     &EvtData[i], bsize, split);
     }
   }
@@ -1255,11 +1288,11 @@
 		      //
 		      
-		      Evt[iconcount]->FillHeader ( (UInt_t) (ntshow + nshow),(Float_t) (nshow*10000+iconcount*100+ii),0 );
+		      EvtHeader[iconcount]->FillHeader ( (UInt_t) (ntshow + nshow),0);
 		      //   fill pixel information
 		      for(i=0;i<ct_NPixels;i++){
-			for (j=0;j<SLICES_MFADC;j++){
-			  fadcValues[j]=fadc.GetFadcSignal(i,j);
+			for (j=0;j<FADC_SLICES;j++){
+			  fadcValues->AddAt((Char_t) (fadc.GetFadcSignal(i,j)),j);
 			}
-			Evt[iconcount]->FillPixel(i+1000*ii,&numPix,fadcValues);
+			EvtData[iconcount]->AddPixel(i+1000*ii,fadcValues,0);
 		      }
 		    }
@@ -1308,5 +1341,6 @@
 	    if( Write_RawEvt ){
 	      for(i=0;i<icontrigger;i++){
-		Evt[i]->Clear() ;
+		EvtHeader[i]->Clear() ;
+		EvtData[i]->DeletePixels();
 	      }
 	    }
@@ -1379,13 +1413,13 @@
 	      //
 	      
-	      Evt[0]->FillHeader ( (UShort_t) (ntshow + nshow) ,  20 ) ; 
+	      EvtHeader[0]->FillHeader ( (UShort_t) (ntshow + nshow) ,  20 ) ; 
 	      
 	      //   fill pixel information
 	      
 	      for(i=0;i<ct_NPixels;i++){
-		for (j=0;j<SLICES_MFADC;j++){
-		  fadcValues[j]=fadc.GetFadcSignal(i,j);
+		for (j=0;j<FADC_SLICES;j++){
+		  fadcValues->AddAt((Char_t) (fadc.GetFadcSignal(i,j)),j);
 		}
-		Evt[0]->FillPixel(i,&numPix,fadcValues);
+		EvtData[0]->AddPixel(i+ii*1000,fadcValues,0);
 	      }
 	    }	    
@@ -1437,5 +1471,6 @@
 	    
 	    //    clear all
-	    if (Write_RawEvt) Evt[0]->Clear() ; 
+	    if (Write_RawEvt) EvtHeader[0]->Clear() ;
+	    if (Write_RawEvt) EvtData[0]->DeletePixels();
 	    if (Write_McEvt) McEvt->Clear() ; 
 	  } 
@@ -1517,18 +1552,7 @@
   //--
 
-  HeaderTree.Write() ;
-  EvtTree.Write() ; 
   outfile_temp.Write() ;
   outfile_temp.Close() ; 
   
-  //  
-  // initalize the ROOT file 
-  //
-  
-  TFile outfile ( rootname , "RECREATE" ); 
-  HeaderTree.Write() ;
-  EvtTree.Write() ; 
-  outfile.Write() ;
-  outfile.Close() ; 
 
   // close input file
@@ -2792,5 +2816,5 @@
   int i, j, k, ii; // counters
 
-  MTrigger trigger(Trigger_gate_length, Trigger_response_ampl, Trigger_response_fwhm);
+  MTrigger trigger(Trigger_gate_length, Trigger_overlaping_time, Trigger_response_ampl, Trigger_response_fwhm);
   MFadc flashadc;
 		      
@@ -3072,4 +3096,9 @@
 //
 // $Log: not supported by cvs2svn $
+// Revision 1.13  2000/10/25 08:14:23  magicsol
+// The routine that produce poisson random numbers to decide how many phe
+// form NSB are emmited in each pixel has been replaced. Now a ROOT routine
+// is used.
+//
 // Revision 1.12  2000/09/22 17:40:18  harald
 // Added a lot of changes done by oscar.
@@ -3080,4 +3109,9 @@
 //
 // $Log: not supported by cvs2svn $
+// Revision 1.13  2000/10/25 08:14:23  magicsol
+// The routine that produce poisson random numbers to decide how many phe
+// form NSB are emmited in each pixel has been replaced. Now a ROOT routine
+// is used.
+//
 // Revision 1.10  2000/07/04 14:10:20  MagicSol
 // Some changes have been done in the root output file. The RawEvt tree is only
