From 8d8daebe7882e05110cf5ed6cf65d34963a8d7cb Mon Sep 17 00:00:00 2001
From: adrien-matta <a.matta@surrey.ac.uk>
Date: Sun, 11 Jan 2015 14:49:51 +0000
Subject: [PATCH] * Adding MUGAST analysis

---
 NPAnalysis/MUGAST/Analysis.cxx            | 283 ++++++++++++++++++++++
 NPAnalysis/MUGAST/Analysis.h              |  67 +++++
 NPAnalysis/MUGAST/Makefile                |  31 +++
 NPAnalysis/MUGAST/NPAnalysis              | Bin 0 -> 47784 bytes
 NPAnalysis/MUGAST/RunToTreat.txt          |   5 +
 NPAnalysis/MUGAST/configs/ConfigMust2.dat |  26 ++
 NPAnalysis/MUGAST/configs/ConfigSSSD.dat  |   4 +
 7 files changed, 416 insertions(+)
 create mode 100755 NPAnalysis/MUGAST/Analysis.cxx
 create mode 100755 NPAnalysis/MUGAST/Analysis.h
 create mode 100755 NPAnalysis/MUGAST/Makefile
 create mode 100755 NPAnalysis/MUGAST/NPAnalysis
 create mode 100755 NPAnalysis/MUGAST/RunToTreat.txt
 create mode 100755 NPAnalysis/MUGAST/configs/ConfigMust2.dat
 create mode 100755 NPAnalysis/MUGAST/configs/ConfigSSSD.dat

diff --git a/NPAnalysis/MUGAST/Analysis.cxx b/NPAnalysis/MUGAST/Analysis.cxx
new file mode 100755
index 000000000..4849a27d9
--- /dev/null
+++ b/NPAnalysis/MUGAST/Analysis.cxx
@@ -0,0 +1,283 @@
+#include "Analysis.h"
+
+int main(int argc, char** argv){
+  // command line parsing
+  NPOptionManager* myOptionManager = NPOptionManager::getInstance(argc,argv);
+
+  // Instantiate RootInput
+  string runToReadfileName = myOptionManager->GetRunToReadFile();
+  RootInput:: getInstance("RunToTreat.txt");
+  TChain* Chain = RootInput:: getInstance()->GetChain();
+  // if input files are not given, use those from TAsciiFile
+  if (myOptionManager->IsDefault("DetectorConfiguration")) {
+    string name = RootInput::getInstance()->DumpAsciiFile("DetectorConfiguration");
+    myOptionManager->SetDetectorFile(name);
+  }
+
+  if (myOptionManager->IsDefault("EventGenerator")) {
+    string name = RootInput::getInstance()->DumpAsciiFile("EventGenerator");
+    myOptionManager->SetReactionFile(name);
+  }
+
+  // get input files from NPOptionManager
+  string detectorfileName    = myOptionManager->GetDetectorFile();
+  string OutputfileName      = myOptionManager->GetOutputFile();
+
+  // Instantiate RootOutput
+  RootOutput::getInstance("Analysis/"+OutputfileName, "ResultTree");
+  // RootOutput::getInstance()->GetFile()->SetCompressionLevel(0);
+  // Instantiate the detector using a file
+  NPA::DetectorManager* myDetector = new DetectorManager();
+  myDetector->ReadConfigurationFile(detectorfileName);
+  // Attach new branch
+  InitOutputBranch();
+  InitInputBranch();
+
+  //	Instantiate the Reaction
+  NPL::Reaction*  myReaction = new Reaction ;
+  myReaction	->	ReadConfigurationFile(myOptionManager->GetReactionFile());
+
+  ////////////////////////////////////////////////////////
+  // Get pointer to the different detector
+
+  TMust2Physics* M2  = (TMust2Physics*) myDetector -> GetDetector("MUST2");
+  GaspardTracker* GD = (GaspardTracker*)  myDetector -> GetDetector("GASPARD");
+
+  // Beam Energy
+  double BeamEnergy = 4.0* 74; // AMEV
+
+  // intermediate variable
+  TRandom3 Rand = TRandom3();
+  int DetectorNumber = 0 ;
+  double ThetaNormalTarget = 0 ;
+  double ThetaM2Surface = 0; 
+  double X_M2 = 0 ;
+  double Y_M2 = 0 ;
+  double Z_M2 = 0 ;
+  double Si_E_M2 = 0 ;
+  double CsI_E_M2 = 0 ; 
+  double Energy = 0;
+  double E_M2 = 0;
+  double Si_X_M2 = 0;
+  double Si_Y_M2 = 0;
+  double ZTarget = 0;
+  double TargetThickness = 9*micrometer;
+
+  double ThetaGDSurface = 0; 
+  double X_GD = 0 ;
+  double Y_GD = 0 ;
+  double Z_GD = 0 ;
+  double Si_E_GD = 0 ;
+  double E_GD = 0;
+  double Si_X_GD = 0;
+  double Si_Y_GD = 0;
+ 
+  
+  // Get number of events to treat
+  cout << endl << "///////// Starting Analysis ///////// "<< endl;
+  int nentries = Chain->GetEntries();
+  cout << " Number of Event to be treated : " << nentries << endl;
+  clock_t begin = clock();
+  clock_t end = begin;
+  cout.precision(5);
+  //////////////////////////////////////////////////////////////////////////////
+  // main loop on entries //
+  for (int i = 0 ; i < nentries; i++) {
+    if (i%10000 == 0 && i!=0)  {
+      end = clock();
+      long double TimeElapsed = (long double) (end-begin) / CLOCKS_PER_SEC;
+      double percent = (double)i/nentries;
+      double TimeToWait = (TimeElapsed/percent) - TimeElapsed;       
+      cout  << "                                                      "<< flush;
+      cout  << "\r Progression:" 
+        << percent*100 << " % \t | \t Remaining time : ~" 
+        <<  TimeToWait <<"s |  Analysis Rate : "
+        << (double) i/TimeElapsed << flush;
+    }
+    else if (i == nentries-1)  cout << "\r Progression:" << " 100% " <<endl;
+    // Get the raw Data
+    Chain -> GetEntry(i);
+    // Clear previous Event
+    myDetector->ClearEventPhysics();
+    // Build the current event
+    myDetector->BuildPhysicalEvent();
+    // Reinitiate calculated variable
+    ReInitValue();
+    
+    // Get the Init information on beam position and energy
+    // and apply by hand the experimental resolution
+    // This is because the beam diagnosis are not simulated
+    // PPAC position resolution on target is assumed to be 1mm
+    double XTarget = 0;
+    double YTarget = 0;
+    TVector3 BeamDirection = TVector3(0,0,1);
+
+    // Beam energy is measured using F3 and F2 plastic TOF
+    BeamEnergy = BeamCD2.Slow(BeamEnergy,TargetThickness/2.,0);
+    myReaction->SetBeamEnergy(BeamEnergy);
+
+    //////////////////////////// LOOP on MUST2 //////////////////
+    for(unsigned int countMust2 = 0 ; countMust2 < M2->Si_E.size() ; countMust2++){
+      /************************************************/
+      //Part 0 : Get the usefull Data
+      // MUST2
+      int X = M2->Si_X[countMust2];
+      int Y = M2->Si_Y[countMust2];
+      int TelescopeNumber = M2->TelescopeNumber[countMust2];
+      Si_X_M2 = X ;
+      Si_Y_M2 = Y ;
+
+      /************************************************/
+      // Part 1 : Impact Angle
+      ThetaM2Surface = 0;
+      ThetaNormalTarget = 0;
+      if(XTarget>-1000 && YTarget>-1000){
+        TVector3 BeamImpact(XTarget,YTarget,0);
+        TVector3 HitDirection = M2 -> GetPositionOfInteraction(countMust2) - BeamImpact ;
+        ThetaLab = HitDirection.Angle( BeamDirection );
+
+        ThetaM2Surface = HitDirection.Angle(- M2 -> GetTelescopeNormal(countMust2) );
+        ThetaNormalTarget = HitDirection.Angle( TVector3(0,0,1) ) ;
+        X_M2 = M2 -> GetPositionOfInteraction(countMust2).X() ;
+        Y_M2 = M2 -> GetPositionOfInteraction(countMust2).Y() ;
+        Z_M2 = M2 -> GetPositionOfInteraction(countMust2).Z() ;
+      }
+
+      else{
+        BeamDirection = TVector3(-1000,-1000,-1000);
+        ThetaM2Surface    = -1000  ;
+        ThetaNormalTarget = -1000  ;
+      }
+
+      /************************************************/
+
+      /************************************************/
+      // Part 2 : Impact Energy
+      Energy = ELab = 0;
+      Si_E_M2 = M2->Si_E[countMust2];
+      CsI_E_M2= M2->CsI_E[countMust2];
+
+      // if CsI
+      if(CsI_E_M2>0 ){
+        // The energy in CsI is calculate form dE/dx Table because 
+        // 20um resolution is poor
+        Energy = 
+          LightSi.EvaluateEnergyFromDeltaE(Si_E_M2,300*micrometer,
+              ThetaM2Surface, 0.01*MeV, 
+              450.*MeV,0.001*MeV ,1000);
+        E_M2=CsI_E_M2;
+      }
+
+      else
+        Energy = Si_E_M2;
+
+      E_M2 += Si_E_M2;
+
+      // Evaluate energy using the thickness 
+      ELab = LightAl.EvaluateInitialEnergy( Energy ,0.4*micrometer , ThetaM2Surface); 
+      // Target Correction
+      ELab   = LightCD2.EvaluateInitialEnergy( ELab ,TargetThickness/2., ThetaNormalTarget);
+      /************************************************/
+
+      /************************************************/
+      // Part 3 : Excitation Energy Calculation
+      Ex = myReaction -> ReconstructRelativistic( ELab , ThetaLab );
+      ThetaLab=ThetaLab/deg;
+      /************************************************/
+
+      /************************************************/
+      // Part 4 : Theta CM Calculation
+      ThetaCM  = myReaction -> EnergyLabToThetaCM( ELab , 0)/deg;
+      /************************************************/
+    }//end loop MUST2
+    
+    ////////////////////////////////////////////////////////////////////////////
+    ////////////////////////////////////////////////////////////////////////////
+    //////////////////////////// LOOP on GASPARD //////////////////
+    if(GD->GetEnergyDeposit()>0){
+      /************************************************/
+      // Part 1 : Impact Angle
+      ThetaGDSurface = 0;
+      ThetaNormalTarget = 0;
+      if(XTarget>-1000 && YTarget>-1000){
+        TVector3 BeamImpact(XTarget,YTarget,0);
+        TVector3 HitDirection = GD -> GetPositionOfInteraction() - BeamImpact ;
+        ThetaLab = HitDirection.Angle( BeamDirection );
+
+        ThetaGDSurface = HitDirection.Angle( TVector3(0,0,1) ) ;
+        ThetaNormalTarget = HitDirection.Angle( TVector3(0,0,1) ) ;
+        X_GD = GD -> GetPositionOfInteraction().X() ;
+        Y_GD = GD -> GetPositionOfInteraction().Y() ;
+        Z_GD = GD -> GetPositionOfInteraction().Z() ;
+      }
+
+      else{
+        BeamDirection = TVector3(-1000,-1000,-1000);
+        ThetaGDSurface    = -1000  ;
+        ThetaNormalTarget = -1000  ;
+      }
+
+      /************************************************/
+
+      /************************************************/
+      // Part 2 : Impact Energy
+      Energy = ELab = 0;
+      Energy = GD->GetEnergyDeposit();
+      
+      ELab = LightAl.EvaluateInitialEnergy( Energy ,0.4*micrometer , ThetaGDSurface); 
+      // Target Correction
+      ELab   = LightCD2.EvaluateInitialEnergy( ELab ,TargetThickness/2., ThetaNormalTarget);
+      /************************************************/
+
+      /************************************************/
+      // Part 3 : Excitation Energy Calculation
+      Ex = myReaction -> ReconstructRelativistic( ELab , ThetaLab );
+      if(Ex!=Ex){
+        cout << ELab << " " << ThetaLab << " " << Ex<< endl;
+      }
+      ThetaLab=ThetaLab/deg;
+      /************************************************/
+
+      /************************************************/
+      // Part 4 : Theta CM Calculation
+      ThetaCM  = myReaction -> EnergyLabToThetaCM( ELab , 0)/deg;
+      /************************************************/
+    }//end loop GASPARD
+
+    if(ELab>0)
+      RootOutput::getInstance()->GetTree()->Fill();
+   }// loop over events
+
+  cout << "A total of " << nentries << " event has been annalysed " << endl ;
+
+  RootOutput::getInstance()->Destroy();
+  RootInput::getInstance()->Destroy();
+  NPOptionManager::getInstance()->Destroy();
+  /////////////////////////////////////////////////////////////////////////////
+  return 0 ;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void InitOutputBranch() {
+  RootOutput::getInstance()->GetTree()->Branch("Ex",&Ex,"Ex/D");
+  RootOutput::getInstance()->GetTree()->Branch("ELab",&ELab,"ELab/D");
+  RootOutput::getInstance()->GetTree()->Branch("ThetaLab",&ThetaLab,"ThetaLab/D");
+  RootOutput::getInstance()->GetTree()->Branch("ThetaCM",&ThetaCM,"ThetaCM/D");
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void InitInputBranch(){
+  RootInput:: getInstance()->GetChain()->SetBranchAddress("InitialConditions",&Init );
+  RootInput:: getInstance()->GetChain()->SetBranchStatus("InitialConditions",true );
+  RootInput:: getInstance()->GetChain()->SetBranchStatus("fIC_*",true );
+}
+////////////////////////////////////////////////////////////////////////////////     
+void ReInitValue(){
+  Ex = -1000 ;
+  ELab = -1000;
+  ThetaLab = -1000;
+  ThetaCM = -1000;
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
diff --git a/NPAnalysis/MUGAST/Analysis.h b/NPAnalysis/MUGAST/Analysis.h
new file mode 100755
index 000000000..4e36754d2
--- /dev/null
+++ b/NPAnalysis/MUGAST/Analysis.h
@@ -0,0 +1,67 @@
+// You can use this file to declare your spectra, file, energy loss , ... and whatever you want.
+// This way you can remove all unnecessary declaration in the main programm.
+// In order to help debugging and organizing we use Name Space.
+
+/////////////////////////////////////////////////////////////////////////////////////////////////
+// -------------------------------------- VARIOUS INCLUDE ---------------------------------------
+
+// NPL
+#include "DetectorManager.h"
+#include "NPOptionManager.h"
+#include "NPReaction.h"
+#include "RootInput.h"
+#include "RootOutput.h"
+#include "TMust2Physics.h"
+#include "GaspardTracker.h"
+
+#include "TInitialConditions.h"
+#include "NPEnergyLoss.h"
+using namespace NPL ;
+// STL C++
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include <string>
+#include <cmath>
+#include <cstdlib>
+using namespace std;
+// ROOT
+#include <TROOT.h>
+#include <TChain.h>
+#include <TFile.h>
+#include <TVector3.h>
+#include <TRandom3.h>
+#include <TMath.h>
+#include <TObject.h>
+
+// ----------------------------------------------------------------------------------------------
+void InitOutputBranch() ;
+void InitInputBranch() ;
+void ReInitValue() ;
+/////////////////////////////////////////////////////////////////////////////////////////////////
+// ----------------------------------- DOUBLE, INT, BOOL AND MORE -------------------------------
+namespace VARIABLE{
+  double Ex;
+  double ELab;
+  double ThetaLab;
+  double ThetaCM;
+  TInitialConditions* Init = new TInitialConditions();
+}
+
+using namespace VARIABLE ;
+// ----------------------------------------------------------------------------------------------
+/////////////////////////////////////////////////////////////////////////////////////////////////
+// -----------------------------------ENERGY LOSS----------------------------------------------
+namespace ENERGYLOSS{
+  //	Energy loss table: the G4Table are generated by the simulation
+  EnergyLoss LightCD2 = EnergyLoss("proton_CD2.G4table","G4Table",100 );
+  EnergyLoss LightAl = EnergyLoss("proton_Al.G4table","G4Table",10);
+  EnergyLoss LightSi = EnergyLoss("proton_Si.G4table","G4Table",10);
+  EnergyLoss BeamCD2 = EnergyLoss("Kr74[0.0]_CD2.G4table","G4Table",100);
+}
+
+using namespace ENERGYLOSS ;
+// ----------------------------------------------------------------------------------------------
+/////////////////////////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/NPAnalysis/MUGAST/Makefile b/NPAnalysis/MUGAST/Makefile
new file mode 100755
index 000000000..abdac126f
--- /dev/null
+++ b/NPAnalysis/MUGAST/Makefile
@@ -0,0 +1,31 @@
+# include same architecture file than for NPLib
+# so that consistency is ensured
+include $(NPLIB)/Makefile.arch
+
+# additional libraries
+LIBRARY  = `$(NPLIB)/liblist`
+LIBRARY += -L$(CLHEP_LIB_DIR) -l$(CLHEP_LIB)
+
+PROGRAMS	= NPAnalysis
+
+all:	$(PROGRAMS)
+
+NPAnalysis:	Analysis.o
+	$(LD) $(LDFLAGS) $^ $(LIBS) $(LIBRARY) $(OutPutOpt) $@
+	@echo "$@ done"
+	
+
+# rule for creating .o from .cxx
+.SUFFIXES: .$(SrcSuf)
+.$(SrcSuf).$(ObjSuf):
+	$(CXX) $(CXXFLAGS) $(INCLUDE) -c $<
+
+# some cleaning
+clean:
+	rm -rf *.o
+
+distclean:
+	make clean; rm $(PROGRAMS)
+
+# dependences
+Analysis.o:	Analysis.cxx	Analysis.h
diff --git a/NPAnalysis/MUGAST/NPAnalysis b/NPAnalysis/MUGAST/NPAnalysis
new file mode 100755
index 0000000000000000000000000000000000000000..0d3882cc25d0c134a2037c81bb354721d0ab6dd2
GIT binary patch
literal 47784
zcmeHw4Om>&ng1mO#g7QF#!dYktJbJBGD%2?8igcd1_KEKv8fsd0+WCepfE(DMv2K(
zCfBP}#ilj2)V40RwoAL>($>imO@+E{mReV7wMyN7T&!)WT8q{;|KIOD=g!AvNTRX3
z&;NOH^`7&7pZ9#9d(N5gU+?|???)O&TDoDhO)(5(7Tz7l7)H453_ynQalC%Kfj~*Y
zGT+s{(v_qpKWWKmN{n^}kw73&?ps}+EF$`i$uvXb@Xg4;o2l7>Kq%N6ip#p~<)47e
zfc?yJB}05_T%1T-A{q!Zhg#M)$4G8_M^`9&`79hf4z4ixrR^P|3CdoeCRo=PYy!<~
zuV}5Z_qMi2T!YHO1pn4oRRw~rRl&wkAXK^5Z7)Bl?2T&&h$q=|9F6%`)llCYFF?1w
zygFs?vs#`w+Qy_$AW+pDYO1YYuO-~}9?|wr(oPXieB8bU0xk77*49@CYU|fEK+tV(
zPrdR_Dj9s@ZX1dA1A$;oU|mz?29ygQx4l6m!uFCUT(nW(`^zueaVruG1eO+*7ic9$
zXs^<avo+0W&l+btrd`H-0)h1n@miSNUXBtM`-y(Bx+@$W;y|FjF3`Mb!`g<rKx3$B
zf`2*ihyH1I4B~Ek>yqr%RqoGTzP9HWA)aWD`K(E@x1oWRS{n+iYpJiA;9owvApLXt
zIq^h$M<v)I7zk8XhAQJkcYTy-do!g{41;*mI1pDAC=giN43XI5wpWA7qA6`ICg%Wd
zI{HP!h7Ap9o$7JhYt;7a1jWSsCXmHId>k$+T(R7@w6I(oZqq*H$8kd47b%?ekZ9`@
z80T}yYEx|?8*vE)Dz+d7xd(CEafXr8fp!i$`_@d-?=_5nLEQgU!>~cX6e046j3WJJ
zBfb`I8Q#gBt_RV_QZSLE;lX<>-V0lrn=Y)YU3+2mrn+k2d``woKaQ#!et%Ce=YhxG
zT5-!cr8O6v1sc;ejy_u6^BkNsJhPA;>Tw=Oe3(uSUh)#hkNl>_%1{kcU((PNoZZYZ
zh|huLOAA-V#ScP$MKJV%<o&hH2?_`HXIWF_x_ANyCqK8^(KrbC#>$xV!IV#VQ}Bb8
zXKnol%5O<SbEvthskTwH4(xw%CFZTxgU@eC&8Ftss%EWlQ1)x$ZRo)A<uy&gc!^Rz
z4{yAEMlpP)#rp<YXxXObP;kTS#k0{*YS*%r9!xzT-!;Xtw#{_VM-tMZ6~lnRWtGj1
zl});i_aj%hvb3SWsjA8H344VY{A(-gmNe8?1HdYTML98_vGfb;L&2uXDvB;?XlSag
zt*;CP6U%=Rzl&R%Lvs@AbrQK1B?(o!pZt|KG}JlCiocWCyJ~4L6s!t0G&%W79$#9K
zvE=%zI{*CHUR`;g1efDj_vZ~`HR5wMZrlR^&-r*|oCDs2ary9bxC9QDz~K@&Tmpwn
z;BW~XE`k565?JMr{Mx_ejgEi9HldmE!ZnNxf5bOF5T5$hzI}8n5;Xw%BfaBq?%QVy
zVy72FFcKaE#cxH28AYD9AHk-b-wO8&8qTJcm9ZMjA&6!YGkb*?>Gg=k@Ju0wH8x8T
zb5xY4qI?nQ70F1iUx<H!y}UP=W^WE6`)^D)5}pNklpg!dsIX08`^`>r>@O4<hOm{4
z6{Vl{t4h}s)7A7lAdRebNM53=nXa|yflo7`Xo>g~7Gfk^BR)kd6j5Q}Mj?h<Rn(@U
zb`epMk!Xhyqcf2*oX@6<^OQ50F=xyu=_ogmGCRq!_d+TuBXrU}QRx~9x`ge#E2MD7
zf9DjA%9Q;u<;^JR$Wk}+X+~9r=I*)*y95g$&>sGaqqkka?zF5h_j5<5;;S2VT_NQY
z?qXi7jGLi{yzG#CT0)FiJ(ACGw-Cb`>r=#j6%DFrNJK1=j99}${4dzE#Ybxdkv&~y
zXV`HIP7B-YB^z~3j{Pl2B^43<wBITe_l9D+){N&@F&oqVN1|w}ltM2B>}Me?CeR8*
zyM-w`MHKc^)an(DNOX{CM+WTWPP$-;gefe0t3PgxbbA(!S(2cA3Y8vXPx}cn+Xr^U
zdJN&{IiC<Awo@0&w&~rGiqGnI^9RZQ?HQs^@7?@v@&~|oF-Eyj1IOs3i)DwP<M>=d
z{X1yiDUsZVv882C0lhsu;FR!o0b`AZUp{CwGhv+7$_lnJE{7hl5mos@j9BAR`Qb4k
zhBaoqEqa+M%2v@#My4f_5z8Y)Hkv-E603)G`SLPJqT6u`P7B-YB^!-~9DAcvNuwwO
z=9GTgyOeHMOxK$61a`>KXucy+G>5q{dnsUl0m4bz`LG!)qOd_xt5-B4(H%@1jpjrr
zU9d#L6qa3ndE6N3_FHttk_7GFGNp>RpYF;UApbX~Pg=n==+?P6!Tuf8e;E46ni>_N
z_MhOxw|$ONG5QeccgN^f?zc+C&o0pYR;RFEj<chELhmKp{zIIed#h4wCw(YRcjSeB
z7Rm&b+YzsgsL&sUJc@><?Jfn2{eH;zv6xWKnao}!+#b_41xEFd1Wp?w`?^@En?fL6
z9FEpV)N3<}gj*?mO-$J86}A}_`p4pQQM2<vux~p}mz~{-o-6I7ZxGu;@U0Gf7;Q}O
zjWB$Z2(t{63&l#s6aq9V=uNCD{K~fq3Lmx9sVR&_A{7<-sWBty=Ahd<SzcyT<uW`=
znaE*BvNHZ$B7V(MolJ-kD_=TUI8TUSjrkR^L`ADrR3RdkNJgw0Ax2j-V-fUGt3;r%
zpYG<tUF0Vpu<Ai(lyu}xq|8oo?B|?J>0Z_=?wVrLHkFCIxQQ@f|02}Ck+n_s;7vu!
z7~4lD!a0;Z5o~`Sh4?sBflZM>%hJU%i%#6Ybj&bedaTM;6`z$U#b>oLtJbt9R??o;
zD8<kz#7Jkm6ob_!L`!2Ginv2XT`KApkxr3}boK}_>XBq$^hY{p3S?!|r*{{N=b3<=
z;v*f!CsJ5CQ0m?#x=lF6C+?bJ(=GxN`7vT9tSH&`Eu>@NM{|*=hZ$6b)z*|xc@nJX
z*q`_9+m$gL&HM_uBK8Nu@1vNd90$T<anO!~BXMvz4i3e^!8q6-2m9h+PaN!ygI#fO
zhXeLq^6E<K3-z~O2B$kf^bdsF9o|5=Ee^KE!NxdP69+5e;OaP7;(%tx2Gwo)Sz}hl
zf*dK>KB>(piTj4&!}#mEu5@MO-p^GvmSmvY-^dr8F-HdNjWE=P#OSowE~J1psEm@h
zkIM(!QP8a*+%3~nrr(To;eZPBjfjmnVz5g%vO8iG!GFKG=(}vQR&EZQu}@cC3_H?h
zuM&!qV&7XJJ`Oot*dh!sMwE}2Dj$cHk0eUsgN}muXy>U!`W-4hL@tnivl}xrsc7o?
z;#;pok={JP41c=cMiGqDJQ^6H3^X=)Ar#Y}4W=z=TV(np{_KJ9JY7qsKo^IZp)BjC
zGcZqNpJN!NMS)2838Wht{Gw?Q_{+On-h*W$E4%?^xFzb?$lA6BxP9YgQVu=w41@`z
z9F(J$xP9&*2!1Z-!~I!bd@}3tHzQ+yYg!Xle?ObL<<)PK^~&y_W$Xswm3Lo?df>;K
zS?7tHh^2bo%(`y(n_1JtGr@c5+m!f)z{Bsp^2=X*IU6`CaE#5!%Kbdn@Ah?<ifi2o
zt`UYOndq-b-kePV%OGY(Nt7z;aujqkTJ(T2+DxNIDWf|anK!et#S6sKzEx-#Z)SZ4
zRTm}Su2N;w;mE?VOVyVLN%k&`&2XmOVbhe#MwB%BET!J&@S%RPQYXp2O{up!?09)i
z59gyie<7hNsaM|hM@C-CgJTr8hg2pS9aS_N!f<A$Dw)q-ASIKnN`^!!nHonyN@nzJ
zENNZqsL?7+C~n%46ts)cq}+0P{oRg1)y1+0FM&gPjq`+pyEs0-j6xXwA2eW>0&?2U
zLH}svbo43kp<I)~?oR4|Ev0@V^`9YstJ3$U(7%@aD#f3bf`1A5OB6pd1^*QC&zzY4
zXgX-Bo0`)4w~V5&jfI0*;Z2Cq(vM(MuyS9)0@@CtG*NjKPW6C(B-$bhfh2pCVy}*|
z%`jnT%u>~T&w13hJgT}$l<F>V6jXI1UA@3J6GqlSj;vL^92UIK$q*X}7deXXfNKN$
zEqEYC9D?l->~~IfSOeiq7-1?H(F_N~7Rw(oN`1N?-DAd;SSoT1$VUReEyngP+!qkz
z>_D86$?1STHO>)@>z=_5#$y;*vp)TteF@U0kvzvs>JcGPW^|Mry?$w-Harl19zM`B
zQ=kY(=X{9xw>*j24rSMwBW0(fCQLcU`_FyBzx(g${)K<a+S-%}AyX}vGTLazqQ%HF
zsDpfJMmqDvfWl0T8UEd`P4TC3!pwnxu)xU7j95d^j{C49ZgDS6m59Y&zj8@1Q)9>b
zcmD<!--OgGWswmrKAU7QFWF*+vbb7V6wK^ZSb{|lE%wcPAI%5PoBpix`m;X$V|Yyl
z(-=e=7^XVuJqo*%ix%Qcn|PPt(=A)aW2zD@wu^OHvj?+2_XoDN<Rn<zY%NOQKOw;S
zq>95q-|s>StowVAG2IY*S%GFJ>j45Ki0n6FTx?GWy_a-+$Wh;3pTHLRD?os*7G*oN
z7lFifG!t2lHA*5NX7FYoR;5V^8`Rp6V0o6L*emqA7dY<5QX$)Z5p<@KotO#{5?Oli
zN(8$h2w05mRPgX0V%=%V5@jY+G_x(ncEiLpsbW{@G>ybGi7-vp6w(pFc}&NZ%N|;=
z5-bbh!TBov@zI3BB0`fR%A^SX5`u1%?KF8&f=MA<sZEY0nj}J#!^)%x-j%{+1x@}I
z4An%i`9;E1ZPIp3BBNxmnUO}zL$GXLOp~gj><bkv?dD8cd_Kiw>BrH%YvLOHD|#M`
zuzk5$_Di|2^Ah+j#^?`I&`wr%*a}?Y_Pwx!B&1Q?L7O)#S=OFgc0KvmC_byg&0j|T
z#fr~zb@R_5U;DyBbMub`-zl@d&J$S5?2mv)XB{JiJm{gYGph1ca~Y9B&$e{j$=L3r
z0{oyg_C#zbQO}-Dqml4%LgfklF4F%!aj+U-Me3nP8uX|~nWMbh@0Coh{b<f8{m{$c
zo)q=_*u<QXo^wOONZ%-<XlIR#qG7>Ijd7$;S0nupJcR{D$g~(86r+}!adx+(C8=>M
z@&ab<HZ?Z4idBV~y$U-Dqdlzt2~vYF2UlU35DaI+TdN<20ZXjL&t|v`N|;F^?o@-x
zqD(9^fKD^8CPjRzj?dQd1&nvu7<=vExvC)gkxXm=B;u3~)OEVktsbN@nw^xSDnbZ3
zE{M>ZS*r)>FcrvSF(dBO?!7CseD<_LEcfgZ?Ll9n2Si{X<1!@~TOS+=4SZQVLt|<X
zTXYFT>|?Z%o<t)=XyiS$YgD1u8q?kaY7fp)`R-0sAVP)RkU$F4eyrjd-^H>|r8<3D
zZ<4W$2Z3VNwCl9Jt^|7-n?x_$A`$v5l4+Zvpq3>WXc$IBRw$!oe_<<<9Si$auX1gN
zV@j>2EaIxxzjg#VL-Mo=A7I^Tmx7*dv22iogsJ$p15L%(rJjnj(VI9G9|^Bihc$aW
zTub5f>G$Zc3u1IDYJ-4|OgbiEYTB=1L&53iBL5>0psPh?67B;D&WAgk48wClSQkF-
zU|G=}uqk=Wp7B?VUs<zu+bs#EwK+=Jwc1>JqB$Z=g9W6`*%v8S8pU)!5}nZn)0Aox
z>1>O!J#At-RI$@^I<1N65TOOtIHMx?9QPJtrRH~ZonjHfV#rXhG0_+iaYs2Vg5e}%
z9vXWLB*&N#{)#VU>eVC~BSK=UGA4p~Nyf%`2)91Lm=GS*#wr|RC_XY+Nu-I_uxbB}
z-{-1k?N=2nP2i`1N4rwYr!S%XLxIi0Jzjr>IzMFpa2+%~pmbQ#E|z@*b#7LCmb;t3
zocwDPpGE2BpHKe9iqFz<^N%6_WW{FzxcR^1SGbdZ1*`l69zAxdFo#sZWh}$D3JY$v
z6kxWc<4(r*PAVWBTGMkQ_3YzmG!iaJs0g7qkv?&5)MG)?+(>!1-*cH<9fya3jQ_}I
zx&&p+7EljMeu&X!zmq&001*<M0bX^lMKcR1n?0=t3uU`OE9NIE5`kjIb@?J08{j`F
z3-Y7^{u+qb=V>E(iAIRf$j2eUuV+2Lzb8xI)!2T@o^}M4U;31CJtt9_2$i2#bL6yV
z5o36rwg+)m7)u!=YkLO5(VroJsf>RG17Gs|9<>+19aP0E#~?o8m!nGI1WEQi=L_58
zu&I8Fs7Fb&$KepvXF7bSAFI?!vdffuw!^0S1xlSX`};~g)8S*8K$z<$E-S2QjVIB*
zH6)9SD2cK|U^oiWx+I|K*JM)7p7xBaoMqcCV=rj&BF*?Wpq%Ey@Qn36ZpW7k8TW`@
zwnd^d&D}2w{V+f6W`Jtm`ZY=tSv?bVjHcbkHqE^Z-PUtYRP-*=Z;I1J5Yvj#_sZT!
zc+5#3J`%RO&t;CocAPG--{f}kEH-X#Cr84+iV5H=lL?(lgW8$tOf(-(y1Izd>#5*k
z*}q`ITK^}2M{!<8g3N5gAgFC2J=t^LW%N_{3UeeLr^=6}K*e12n&dzCR5V|^gl18n
zj=S;gZ02^4Dup43i$Z;iUod8rB>Q7Zc`(MtG7>P$N41ZVnY3<=sP;jkw2yvAVH9~l
zCUQ5?s1<EzLD{q7HC3nRjie97=^}`l68c%ni9W}s{c#Yq;iyPF1Wm{K{R&<Ui#WOI
z5H}aSARhzKc5yQ-#7MY{7>=YBQDNb3A%=TY)Tg3;5mA!3_#nh+k1B|6M0Nucg+<3j
zlppDst3}G}B*#9=@!N5pPTE&0-5rjuT?9gs#2-QM_D7z^ndz-cxFaTfTY~Ty9E;y!
z8VHxeJeP*{_pr&2@{v<%T~;=RI9r$1Fb~?d)3Ui}02N}&Jt)6<ng8O=<B{;4NGvP-
zFbtUj`?u`j-KjNCxmvK(xLGAGmTf2xr2gOjB=V=HKbF7*S$d)l*X(h~I-c9ghIsz6
zg2nS8!nobQT<nFs{oe@It(%>7`Zl&cL*MsmL{Xq6{t*j&zqQ%6E5&r~>k1#TuLQ1(
zeY5SiT88XzQ37K#8nt3zPzG#=&lb8TP7f1SLqr$5pp`o)W@q$sFt!#&ffe)_o2eI_
zN!iFik!dN&$_Ak*^5Y`2lTg7vY^R1Z0Xg0b*}It{o$eDL_dMlvx4l#0XDhtJz7x2k
z){RVb*uS9!PAp^gaH<K|?mtWD<9~P3!4VSRq)hN*$ZyR^SDBcSn29mUN+uL!*&wJ)
z5K@^K0pxhoVZYB5t<Bx`TLR<;@uh>hZKXHQE7BT8svv1MNLpEBFdPVdhRV=z%(fXN
zZ2$30$<R=o9wwZWq07bojEiJ^TvPxoRx5*)l?*A!>IXq(h>*%qA0Wpkab}kIt@3b+
z%EMjwjzPBk%){U4la>29Mam)Rb&wnrltH$Hekrvh;htCuW|Xi!Q)R0=P7f1K%GOq~
zKjQ|B_h@XJfyJ`bMOn#~f~*}NsB95Z+3En~_$1C;DSoRw_y}*=!|tQHyl*g4yl3=y
z^eoio5PPps>{CPujr3yxMn4aJjOR#q#3=S3Fuh4@_%(phswC+dVmrzbjw?h(K^66P
zse|u}gcP(6-H+=;l#bNJX2Ry?LHnBk)=eBAhGcvQXR}VQ?=Dp{?aNrIV}6@O%<L2*
z4rWEf$`hicF{w*j?@+weDq;?xCz6rQ8X@8qLpY&{VMm^=%KntN7iC++v_X<T@}&KO
zqEg<TML0zZx#A3=$6JV%yN#b?){M2-WW&V4gGqAj;~*Ice;uGx+sv(fHx1)^L(<fJ
zE#qryVcIA;u-Hlck>YmLb(`PxG48;-18*1JZogUF27V9cQ!&G<E^JnCxE+yQOeb+T
zN0QmAI8WMtQB<nfg(@3ufR%SRLn8eK4>WQ2C{7nxb%2~B=z8vbs3z}okr#iE#+DO_
zHbPiheON(O4G2Y%-57HT73}+oQvfzl`z|Jp`BAhs_xr7kZ^**f*N1%dBVRa)@eLy1
zjEC`#;Keb#Zw!1KaTkvx%?i<GzE=wrE}`jF^xljTM!ps2Nqe87QpLVf<<Ae;$v0uU
z`E+I_oFAtPoRshHppp{vod;o+Zv|O7AgFv3O33#RQ2Tx+y=4zu{+g#y0BjBHJTm)4
ztf_1qO^|UuW?5Kneku8SHm6ZHe-6{YDLZZDAWQ2yWIj&bbmHezCr0DR;x$io#2?YO
z7ICiFHD$^XhTJh*^VGVe`F`sgo<96`jrYt>JB<Z7;731*U}h&&JYv5AsxEI<XU2S(
z^Kaeb(PP|rr1))&7PdW)+UDkQyBR>%=}Tkl30lX+PSw-H(m||@qttr(1NR!<-jqQG
zr?D(4@mVc5&}>NJXfQ}$tgsq!d~BzWo(oFkgS1noG*j%!y2F0#R9Z+_Z<uO<f_v+f
z!X+yDv%)DY-ES6U$&}M8xwm9Q{C>4z7(Q=*!S_)xhW#MyYT+myw$BykqtviZC2TI5
z!(L`(JSE#_GtPQ~xqRBjE;B|cHa@gXma<-H=7AEi<{@<28|_Mai?i$}nIB6f^EhE#
zjE9*0*eU#YJW%~rtM&CE*WYzW4Jk{N#_KOrd`qmqH@J2^r22aseeb~acNhGT+HmUc
z-(`kKs=uR?>hBfUO{%|IW=R+98p+<GCbo7fqgl;1)jv@6R|3rsUw=~)lHnZzr~cl?
zPQ-!h?{T$cKjiv*koz7J>d#MqlKS7LB)voFfAeIA<v{&!FQk&{uYn5_Yd`gOnxla_
zlm7Pz6VmnfWy0p7@5z@|#+hPk#@G8){dIi&Q0i}SLNfCu8P)&h!RmqQFH<e<54rwc
z;l9L#`fG;|$@Nz!tL{UozmV*J9H{<|L&{0@cRH6>$@P~!eqIN=N&Rn>3F-R#g=BBh
zn{0hn#!qD!o$;&3Rs9X&<NU+-zuOa%*(k}V`U}Boy#DMP$1$ef!{GM}y5B=kg&QFD
zX;=d!P1iEt_hD?oFtr&ArIs;&WEH02;*laQrp#h{fD;C)t9UF14acAn1x=jav&9@|
z=0{G1_SQYwYo3aa?_1vhpQ(-eO}ty4?iL4pWA+2ch~LE0O>3zA0lEfTesftSlH!xR
ze}MIblOFA6bg29wF9Y@}vA7wq&$eyl4Av3u^+=L_Yl8laME!>*(|6@ZIe`592Nfpd
zXF~pmWBE@hzvT_j6xc!5tm45U%hyw6S!zYw+lU&)S4s_{r^D+JB00f8Y$eZB5pH=a
zOrl6<hr%R^bnYOAl{x0(B3z3{1U=Qydj*TEYDaao`Ax>FI#6vL!0~0#(v61F2e@CY
z#L;-rXaIBdjY7xj+vEzocx1r$GIEJrglDPLJczbzemNb)tgUAtG<`4gb7<9we_-k}
zlm$WUsQO+WeNLRxpA6v&VyNAFPY{bUVJe{qn_&`=QVApVS%Ia0wwO>+MD6dGoioK!
zr$=}y!Zj>~G0J*;&X(V>4{Z56U7{Hn&DvH##0(QbLVi)OB+}oRX42=TX{{EK!c17m
zgwklTfgEK(qKNbLnnxmj-k^AlvL2tl`@J-O74E2s6`lzw5Aqn9sy!fSAwJ_zdlCaJ
z3mVPA&@|H`WS@qjQ)3u@yCJM_7b8<e5xtY4BK2j9qU;e#t4}0V6p`H+@cKc7gIivc
z;(AXNS9tty3B^SO#WkkXCBl7ag-L{)zbdyXDn!S!#-OB*^so)43=Aq2iEsj<Fp2Ox
zJ%vfMWjB3+jS)qZ2$!%GCXup_Y%>}7mMQ6X=81?dyQl5<v84j0O;?yP)!EW;eH(I2
z;~nXJ_%$Nd-o~g0fh>OgU`MQ_abxx_SQ^DT3av-1+ux>X{Ca~jTlTQ0<9iQ3HUVxw
zFdYMXit)}h-lzc!<IOc<%RPQ>eIp0s8+v04dM9F&v3w(=clyvfH;>4dSIe-y7zsjV
z1Tw??s_D)KzI9KI4Ds>rD?P%Z<HJIh-z>EKY4~{AJo2>f)uW+1f{|)SepBP?LFezb
zzb<yM7r}3HGxyi>{XAgbK{B=}q)fN_Ud3S1#X+Op_ZJKVusz3bZp_QtwfQfR%{%>(
z7nhnoL@galBTs|hvG2Kd-`)CyBXPH@L*-)7zJ~5&Bh0>4QF^xf?#|jZX8RNh|9x%t
zr7=W(DI!nUMMn)`s+8|p8L!nGWKUPZC^VEZBxRzSFdt=eKEVewHz5dQ`^JDRtFSLo
z<%#JqK41Hj=L1Mzp1sbWb?a{b58wo!Hox~Lpw#oQbHz;ZemsGPn<3d(dC2?81Rl2m
z$L#a6Shr5&NJwALuQ0HTj!kH93H+G{;A3h{t<R+eCwsI%Ne9JodA5ViBsSB*Jj6Wy
z$e2_9@%dl7H=(?9Sl(zDs1mh&ky*!Nnw*i?zBdoEJ(|VC_Jh-6ZCceYbd&1Ch4-L|
zZXQ1?E$i`qmAi@S52<gYGj2~;#^I=Iy`$GK=!f=ik7Y#wFjymcsk2RLTH2c{eWt!Y
z|6=R6#PUK}L{`0#+F#g<w7eZzg#vccbK@*aD96gj%}?|vza7QS0z$9V2_~)24#YoD
z{tl#nsQd%f@BcMljSpyB7aZd>7j)i)_TsF6oj!(f-cF;e4D_o|I|KILu!Df6ma2c2
zA%WF?Gh;Qr2n+f+nH7AWjS=+%Rm>F;EXg9p!{|ITg|T-jFUc48+uxzlh;L}X_bg^j
zOkbOasF)STG=$VMj^H;Y68|RTBEDzEHmvmf&FOygo>|-<78g0+6b~0+4|l0q{A`iA
zsvl|h6-8bwGS^^?Ue!|+`T4-qvt%we*YreukM8>^GPC-c)a@Jpegs6Zpp}&qex60&
z@N)o}*?Wa(MLodmLX?tP1X=2s&{@jKif(&myR{F~@b)mn*ssR#!;;l+>4kzmV$fTS
zYR!kAa!68o1sJZ8^sNdZD$LXv%Api<CkAM%QRzq&QJeavjtXb_Bbiv;Nk(vyRU|>+
zv^$6j=)$nxWwvJeBfVTxMWSyYG{X$f?m<;7@<^?qHc;SUv68M%QSj3^2#p?>z)>W~
z={1uQw^Zq=^A(wvk@lPLNjY<=-@FZkzoWhMpiX<1nxEqgI^dHZ9xTN_;DM?8{iPRk
zwGo!3nO?R<ItSqZ9PdYz73Mbrk|u(D4L|LB(F1eCn8OF{ilbtcg$;jh^qaXm`FVyG
zb}4wU+{etogt6WCB37hC(NM?QeSgG6fXTpFPW&+veN1>*QG^xL+YN%OD>?~bX%YTs
z#G~iK8kcgu{z&l?;>R4OW%~L};P}TSAQZ9gqv$lYI(nK7iS44EwQJCC%E3|OZWf5n
zo7qmJ{h9X8d!Yykt~$4ei7XWrsYiT-Nl}@y!Y#u64)E<-Y1?vgBUwdLG*r`Rr!BpL
zmUADhx3=UVA@s<ftHdWXo%R9WwhZCP!O@NZ-+db0VU~EdK9hmcjl5uAk*UjGk{rDg
z8nV8fiIgMO2?$4Vo~3B<5;4Op7gPjEe%0sTpeTi@WbZwaWg@%UHvi#hz{<t=qB7jZ
zTt5Y-q;3B~#8fB1It`_<<|$nes#D)Y(Vx>X9+$*Dw7=%qP~tk-1sH}XIS{dKVM-rI
z{*%YoEpLn<m8I=ybWv7;Zmk$n`UI1&q9XOhq*{%CiwL4bQ1l-|h<aC=a_&8P&r~7x
zP+fgE`Q_)BQckAx%{44+)m_Z|naE6sqDXYHG`+05uy0NCN>!cfor}{HfkrXD@tPkM
z08vg{PE1o;%@#TRqe#|WH!DH$R|}eI`yiqRNqsp&u0+732W2fsUxgJI5Ln=7x!H{5
z*S!}@Tg}>ra|QZByG+PcB)qz;>SasRaX0I(E!_C9)MvjbS=!#oZi%wUlLTa3YVW*I
z5>+%)XxkMHn*d6V-{$R|%aoj=Im7g7B~c+fH84B7AZjzj8Jv4*1ewa(C5G$~R%6UN
zUBRs?35nE+Y#T<8b_`?f7#%whcOc$@ct_UbCnkR_Cmv5`@t~NcR3iE18K<0Q4j~@W
z^D*XR`9$_ZWOPxIco)RFAl8kz8!?7uyv_%4aUW1jt(=STMl4!DS`x|7s#=oSxmr@k
zx0rnJU~h+CjAjnL%PP2r<t!@_1JG7bZ=MjI_G6V`T14dDSq=cHVBPz|B=|3uwwblf
zPv<9V90TDB$f6G#qvui1l0#(a-ZfxEtZIaIHCvD$Qc4_xj-*`(mMKOeySI*}MZ%vF
zwOI(WwsDV1d@_ZMUqgqFb4ZS_J&<%J6zQq$Buw6GR4;RS4M+Fbz}z`5w)FZT6E%o}
z>@}p-DBcI?HH9n_$!ToV7^C@tu#HGFgkt(JfH?agWcnkZBn?ZzhRE2mhvS{>Lev1a
zX8_AOy^YqK?_v8&*^%^(+w%dqzQ^QyW#8F3*@m(2>^Tz7lW@L-c@kbEA-{+Boqef<
z`4TRcaH)isOX!#I3JHrOTp?kJgryReOL&!pt0lZz!fPeGPQnTa*GgC|;W`OxB)ne2
zItl9~Y?QD`!jOa;C2W=OCJAqm@Ky=iB)nb1Z4!P?!gdL_OL(V*cS+bG;XM-GC*l1P
z?vU_H67H1nK?%Dgd`QBtOZc#a+@sld_BSPbRKo8_*dyWhBz#Q5$0h8O@COn;A>l3w
z`z3r*!aWi`E#aVq&q(;JgnK0%lJGeRpO^3j35O;8xr8rE_=<!h622zkuO$49gtmmQ
zOZbL_e?W+T2i!XK*Z7()DBE}Te<SXwA#wCK=qNQFLN61#j1V`6Yi=hrNa$Y(?IJWt
z=rKaC5&9;fi`lok2$d1KpU{nj?j-beLbnt8cS0P+YlaEc6MC0WHK7yG>_@LAbO9kw
zC^eT8x}4A&LYEL~A~c7PNoW?KFA_S9P&Xkiglc|9=x9R6%S1?MDWP}J18de3;&Q&`
zSwgQ7dY8~Jp_4ETjqW9M8KFIdnh5=X(6<P2{HmFbmCfkGgccLpN$4>`_YiuW5Qnvz
zv#=r>y;bB0g$UhD=z2mwB*gK!<~2fB5jvhLt0F?n2rVYGl@Le&nr{)BO=y_VS%myt
zP@Y8SHbU8i{*BNPguF)qdLNsuHJ>K*CZW#};s$KZql8`|l!gz>(dR{u&@+Viu{qjL
zXdj`+36=0W?@>ZuCiD=YKM>kM=mPA=jNV14p3pWzy@YNe^e&-BLi5oIN7oT*CUh;K
z9zvyr_7d_F%EIT==%s|_5}HQ{%@31T4Dt{vBKJf>>j@nTXx{_prk_JueyhntfZZXV
z*m-!p1o-TG;PJLLBOTYL4dV$0d<a~Ew;3(fn1Wyy;yZ|(hoA$oJpX^{{^$;7_(?P(
z!}wQ~5d|>E7W#wnE?(4^@l_(XA;$|53+G87X93ww&d1Q(1|80?fl%z1<jhCF6?GbV
zjj<XCSMM{3_z}c(PC{p)&Xb6Z8xT<EH6j)Q>byhbT=WpSBOVlJ#D`r!qZA0M_A^92
z3xqlwh(t89g~(Sm(n;i3Kxj>L(oqW3`A>4r1roF7*PP#zQwPL@SaiOkIn&snp4EtO
zex;EM$oXuhVJvZUb^&2J#pLv$=fyaG10r6NvkZL=TjMI78_~5^!C8x(--CP%ins}9
zo5s;Nbz&AiN91H6^!iIgE(cPG_y<Jp147e#i9D*2*ND6g<Q&8z=E22MiXDet0HYQN
zO$+BHjm#$JiA2tSYGegDSuh#X@o1!;oQDy73bA<oA`qtY$(abw{kUOV?d0cf+&ZBF
z-fS|ufG|HV5cv-vS0H|e$VsOt14r{4=qe!0f^crvob$-}5fEAv&I=m3f}G=FCB`{Z
zBiEA?NaQqXWIH)eB8X+-Eg;Oo;?oh_hTs|}3$LD`ICY-@hnGH!5w{U}6~Q+UOEpH$
zRAPl^gYs1%>`ZHjECnRpjJ16S5IA8($ms=wTqpxS0dfL5p*;H@*lDDnbTZJ-!jB)O
zgLo%`8#Nna+oNgekBBtNQ9T5hL=mNP@ZOI1Y9immI~%V&BM2#W6FGmzOR;t$oaJMq
zXEzWQNH;nCK-v*MPQ(w779f`AHXsy}bLuYuq1fvbI~@Vd%d_u+HR;z7>Jn4~D-a(^
z*+1a@JYIP?ENujI4mp1YLI>r!5%$ShM$YenY*BQM^?F`d>QD$2;oU((2i^byKKmZn
zvZW2<WD6S^8_f+cm+>MJLWec@ot^P}AlCu83TdQ2fuPIbTnly!5P5zAga)QfMeqwC
zTy4p73Md(X7BD^o!6!8XQQBr$#}o7U3~0(jfKGLi;71_Gvx?Ui^B;pqzM_pe=_x$_
z?*0pwobtQZ=3nH{`xkz>^r6dN{rqKf<@xDlH=ppGWxu>>o8o(J$$$TmKRs8xw&XJ7
ztWcphr+i6e{l?1X!VQf^V^c$@p+2x=>73ci=HU-v)dh`Z^U5XGtb)22M^nmbW0d7h
z3+7#uGdpKZl7-Ti`tk<+VUo(w>=6E{82&WYy4v-Z*TS~*w;b@-DnM#!s^p)cFlJvk
zI|N^R8-w+sWx;y<c?$fw2cw|AvJQV61UL6egUu~<A^xQkqj*(W`5a?eL0L&b=~ClD
z=kb(<Dw{(1ds!Yw%j2*v^cbEMEgRMbn>-EcJd%bd)Zkeg^n~bPu-bDGBtFz*O!Jg9
zHLPz6Ha8<17a5+jJx6(N!CM;KP>Dav1b0HU8-hsSR-+k=xO1gQSkm?8<eZJ<jk4Me
zEp@6iG#IRw3>U!JP-Pu`H#|X>kf)}y8SV$`J(cxRM96~SYsLQ;E;W2bm1`vcTwW6l
zRT6gqhqk0xk(LyLGU4xs80!j`1hB$l>*c70ZXtsl@mU&2bS2(2Pa{@jn2Nf9<l{Z2
z0s)>byrf^d4nx#MXyn)9?;2fd7~_aNi@^(GY(<PFVdO8x=!4j}98){u{$-GXUdeK#
z2l<heSb^LC`Kt_L8{(m>(HrZ~VWDy?2Bp;oJv5B5voYYo@3sq!w2=#7mqQ`O$9{};
zZF7O=8fn=W&^#9#X<Zj%u(-rXYb-F*^WjGa((YPrOzB^4NT*FR(j-O}<Vm}!)JSX1
zPRl;_$V_gvvRwG2-BeN}oFgAVibl4>7v>=ZC8etT$8>B|DBOcGp<`oLsJH@UL%dPr
zJv#R2n6*TH&nhkF*wg%Mjh8t3T7F2!V>-^!G3$W#I&`|MBjVStRq;9<H|qE%9dFa|
zT{_;O<A-$osE!}kalekA(ed*-enrQ&j^EVr`#L_NO8Jqk<CAoJmX2rZI8VombzG$5
zt8`qU<Lh-C(($c2ZrAZWI^L<{hjrYe;~(gFkB;~1cv#1;>G%yDzoTQLTIJ(t9iO1%
z({wyb$8&UiiH<MVafyzv)^W9t>vi0!<J)z7r;hK}ahHz2spH3Vyi3P}I(|;aFYEX>
zIv&&Udpe$qe$94roQ`Me_!Bz*l#b`?xD88S%DbP{Aw}=e?Y3XXLppZ)OLm!(%hz#<
zj(fD-3XM1FxJ}1hj+~DBbv&fw5gm`|IJ;b>lcVE&9hd01QO6xR?$Pm(j>mMIt@~$=
zj!T^Ws$-`dxS->+6XRd1@=@Hw;o%ZETmpwn;BW~XE`h@(aJU2xm%!l?I9vk%n<X&)
z6ZsXDiz`lFjPGVX)AIv?t5+oMyycZ~`)Nb4$yd6dd~wUVb@;pXS2hi0cAO5;Ky#?F
z>V`m7%?*L|E%;-xM%xhn%|v<9I`aAVn<3G%Hn0|d(j9soo{!Ofd7(G2eByRa+lW@(
zm)7AqQ5>1OqNK>1<HJtd`b|X*&CN@_zKuqb+{Z<(EHpO|@Xo7hXu+R2=|~{uR)sb-
z1`Dfvb84$Kr~E494}YJ#wY73>?MAP60pPmI=H>t;<?qh>jJE#Fifpk{T~~q>c|56d
zRiVt+-?%}5!1~tKKx43}xdA&|wV_RcjX6f!*t?Fjm_T+DcQUVR8a_hN%aZ7AZBr6b
z?2Dx+L`e_z(=?Vgv5In+(0`OnhtV|d@aL9a1-JOeb8CWCH!Sh`YRPV!qSWV=u3TB}
zT_B2qvYLh)i-X*GZ1$DRFBf9T@{Oh5`Q?gSSl`?zf7+HN+O-KSn71q#Qt6j2FAFV<
z72?{p6z<T%3(8lny&fj2>wG9rFm}WkXkXZXgo7o^tH|k^$SGaELe;Q$&e}@+6=pOl
z>J(P3D9Z_Wy;U`pO@UBTWo@V#HSHsDVP#!iLlw7YN%5iTjizpwVQEaD_h@=vc^Tv@
z*9W~`<!k|M_)yVCQ=gVuSiTg0cfK4gWdZWd*q5Ab3inSrMVeq9s(^nGcrG$mjhzj!
z2Hh;ji6PBc9#hIKs9#?v<^$9mRstJpOXDJCUSW+)IaQ}uT3KJ+uz~4aPaWIMa8eta
z!rr^8{zml60C%l71Svl*WOR+n0QP-bYeOWqrMr6iy2{!*GTO<gLJ{3Stb-Wpr7l=c
zbVs^JH`ICh4@sBfk2&8EZ1T=W!Kog-G}zeCTpLmiw`($mIrE@^zwRx6G<xN_gg*<d
z6uZ+s$4mCTIs8M^D_cU1Eg`RWeK3S(8>+0Y3i=kHX4zoSFz8!PDvbq8gYdp#lQP=p
zh%BVd!ukm&KZ*v~pCXaDOItQH7BpAY*76*JeL`3A;6&kMmxt2T=(-}+;EEO@-EKJD
zGeZh%xp!{4{H1LDN3gx@$K}DgU~^SNV{k=7(}v1AHDruTrm~-kk+H^3pJWt=Gm{pd
zH&uW3PUz2N3j(#ZlFC?ODtV<r^%ujvd3w^QT#FMPo-ZsZMjvGDkEc|a<ArK<(s7Se
zz@a+I6x*gI6hzF$Ide;cIB`OwYpDvA26?Emv9>u>Tc!PMPpy@Q^BVpg_1c?)B~37}
z0ZlV_Rb^8x&%#tCccj#Gn!pZ+yWBmy&OsxotZPBn*ORj<Luc&jnp|<7qo_14Z)(`E
zG*}m^^ida&)KvGR`t!=_8g6uw>6z;JC)J;GSCp)5<iT5UWj%)FrsPgtTT&wPMc?G|
z3uW$0KCV+m)IX`xocW@Z@&Hij4o<4;>X44ya<4ll3k#c<2G>>Mu+W+HhNpUFO0H2U
z1>RgI`B=`;J002~cOJIMk^QHKl|itwNlH!+5GwEX{?+mpx75~ED-DbvJOxyGWBb+n
zM|QsP{if`6ina`oT1jFJ!=>bWt{&=w3tO6lfpwKtn6XN^tWc{+Onol#yxNB50G1}f
z`IvUNXpq6S!;zY7@set+a}Ra%16Y${lEh3PE0G-^wNbI!^-)^gApNrYBQaUo*chy@
zj^)1RqcDm}$D%D))&hMWg+XUo)&Ef#t1OFqH|R1rS1o@VFlpeMjO*WtO~^MFGlEa5
zVCciB=dP=3X|7Q%c=*E@nBR<U-?WLPTsBuNP!GY3Q?~Ypu~FCTlR1CvLn^CP@rP7a
zA6!T1fhB2NaWd7O%#95rb1?=r2SXTAs@K+r0$9}txKyacM|7Ym7^-Q)bg71zNetvx
z$@nc_0Xwt|zs`b98*1w@!HaT_V#s=bZE$^UeE?rfRW+O*`Vv^^e=&xU7BDi5DFGv!
z7e{biZOVq4K(IAfg+)l91}i9h<<Gj>@J_+EYP!*nYZ&QX<I-~6XkB6SrWxt;xw248
z^u<kBo7ZeKZp<Z3me>yI7A(d{yb7xkxVj}R-RKFy-q0<^RHJ_@4iu*(e>*>tmi&$V
zFKJV!?)+JrF?H&&P3gR=3Q7wL78m)9=hCpBu)<fm>@!6x%gT)IDaO<}zE+<xo;J_;
zds?1z1I1_DKV^ZlZZvjInQDxQAzoX-$K(`x=QADxeH`?uMjQUL*i@rk!VZK;vZ!`_
zO$hgue8vx_EHHLMbcZm6ZoDvMF?z7D$EFxl3hI2uucnmM`i$2h*#0`LjZ0|%j_0TS
zv&NQpWsV(@@2TidSO4Xdcyc`X`8hcqnK>n6X*oG<X}BDe@5#^3_IPr#@pu>j;j5qg
zp)_pW9PNQgdER^F*bJP|_5g9NijdAE`LG)Kq^k%{sRugp9HHYQb)2bVUR>jIw2F*l
zbj-_Xd~o$zp5qX{ffqMl(@sE)W8<_-5KqU;=Xe##jXr{u;WI-;#)&${eNTCK-;)on
ze9D8{ooP7PH%>;}j=Yk{t3k{keP{lTsjFREwy8N3+%S7FP$T^xBzG2UC#IW;bgRxk
zf4297q)CVQV<!WyGGa!Fdo)gC#M?BEYXpMlFIDoD8s{A*>Tl9G?=lhpyvCh-4POC%
zT3Vao+(+1}abA_B{Hq#w?(rN2BITWXI%jI!x%Xpg+`0ermd3}ly;G1u>O1#`mT26$
zzw;H1JNJnOHSXN=IR-72`n-z;)5et=A1YD!4vjnajd+ul^3J`Xy&CViQpx|)(bxFf
z8Xwd6k?0ZBckU<go+a@Teb0mUEr~a3{8o+kX#9SSJNH9+G(M#H&uV;3<G<8+w!YW#
zj>hvfo|U1~*Z74Ruh94v8h7rK)M~s<^Y7Alm&SWF-lOqhjrVK(ZyF!cxCgz8`5n=C
zp2o*CzFOni`aa1`8qd-Amo)C&PvMVOq&zkM=NfO+_<I`f(D=z1i74Nr@r4>6()edI
zKBn=THSXMNc|haN{gx**?%Z>EUgM4WzRQsq@gzNs7i-+PfA$@X^DZFU<0mjOO8Ep7
zev!tF3Wcu(ejMtQ_YNsvsd3&vB;KrX-a{lF);RAY690n6c`uRpBO2%ZM&duzIPWVG
z->Y%ndnEo#jr0B^@wYY3dyT}8JX-n3`;Ej;(m3xq62AcWY17dDn-zW;`55JELJBVf
zo&~}F0)+=P&O4XXzggqFi%I+*;+P%m7KJ~m@l1_Bt?^ckk7#^{PVcW8Z`AlS%tW+@
z+rDD|42^eaJXhoG8ZXj#o5rh&BY)2Qu8qVq+G6*d+KH!O8pA{XcM6XBJVD_P0S6r(
zsONhMKi<J#cHw_fI8DiujVTOB44>!1ixfWHk#BL~4=dc6FO9t}{I4$jLd?`iEGEBF
z;U9DC*D2hYca7&=cslAH`Y}F#V3mk}!-YSkaA#gO&Ok{)K89c9!mC_3e_fL(|5q2z
z-^(QOmna-0_1xydzv06F&4u$<mQarApMsK4#4k`dN<}@Fx$rAp^7RTwEvV;q7k;0@
zW9{WnF8oArkbaDRp~7SSty1_5$9|g&|E|Jg_5FgvW95G&Y97X7_+>8qI)%slZ&kRn
z9y7k;!lN#nzc+&YnEYxN{xugq=E4^uXNmf^y6^!P{&yF?069z4-{``>=fZ#M!cRfT
zCF)=4!q>X+n_M{m7)YZ2k6rk$UHCf+M=7c&8$B&ie}Uj_vGTl3@niK<=Hg$i_~<q2
zsZn@L|7I6{rwf0`rT>@<A8_G&UHA(w91D2kbi9l3VrY;L2Xs04pkO92J;_JGLd00)
z8<=jT@nG1OMvCH*!3WiBU`mk>3uX?}uThD&1@A_@H{xx@y9w`2csJwSiuYE$x8dE6
z_v?6X#(N9iYw<pe_nUYh#rti%Yw=d$U4xfD)@j4L1@G;6Yw&Kv8^&9Yw-N7W@iyUY
z#v8(W2i|tP5xmuSF{K-rwvF|8KZmy#@AY_Zz*~oR16~vFop>$0cj3JoZwKDb<Gly(
zy?F1#+llvnykEe(1Me5{ehKfF@ji(6D|ox`ehu$8@cuL2ZoCb6AHcg4?^p3Yg7;f^
zzk?S~{^9!hzpWpSflC;;$`Dvz*RZy-F0c_N;kDSCn1t+|gg$2y`n*Z#^CzL_fxfJ0
z<>G>(K%g*C2`u?CiI=D5pT?nc!;Q;=4I6^kCiIooVq?AZdLDC9+_@=Ge<M!bMc;jR
zA}7f5(=8s^$tm4Nk&K_!%B6%F>`-BsEVYf?viO0@{tx;N_J+aa={Sdy|Il<24u}$p
zWWvdlcP<3g23&%e+MH~xOTD9vU1s-v3T`|n-^C~ol;;G>y#XKg>dWQ_u))4iRp>+)
za^XT!nW#!qPSiCQrrg!$0ZhQ_-T*I0dPt2|M_B&K#60X+PLdU0N;Bd+3@uO|D=TUr
zJavg2lo=kc#!h>^bJ5_q<>#EKiofxz9QEsUQ;n0nt0$5^Gm&()CdDp}r~?FD_z8C+
z<i-kqo2cb+e}_H9JD-lpUTi^iHGd+Q@^+TbSBpX}DJc(>l;9qi$g8fEaJOk*5iWyh
z^NDwx=C7*fHIWpYyuxPc1glf<WRqNaRYDR=b5cm+0#rk@ldr^tz23_knyP}U8mqDA
zokDRzA-2_P*YVPaJ0Wil_juJ<m5R;!#E&^cEzRY@Rym%looHhLgp>*A0*eo~7A7P`
zTS}}9$NIkOub(I~FD6o68&VfTCJNDx`pN8McINS}SE}rI)g`d{mc=;sU7N}@6jgpF
zk?@vQ);0$xFR(f2@^y8aa4#U3vM#(i;#+ksZcL@}Ks+pOXsDYc{W(-8zr41wSsPfM
z*ccZ2D{&ko=2dkkalJWU7Y9`Vq~gy3KVAT-Bxu2LFcsgc`Ql&-fw_gv1-fpMUDK7L
zZs?`Dmd6&ATh8C%9%^@1W8a*4fdEbsaj~-!x3+L<gwv?cwghpP>cfqPm=fj%)O4;A
z@Zwmzv9elDws2_^X-#IBqy9pD;JLPCU7!};$h|&i(B|k5>t%WTpOZxF6wL=RS~9P9
z*00AAR$W~nb^tb^h2x-Rqp@ts5}amL1sg*F`HeY#!R?~Vn?T8(K$$;*vS0!wZvw?T
z(U5ndCGSL2b8;rwn(v)R;u`Pj@~aYi1Sv({x$6^eijw9{K7S)+;vpTW^EpN)ALoIL
z`?c{Swgs_st_d7D3FFCEY7S4s+?<3{HL_yodUA%BM46|K>XK>d*e;0{KjljzC!7R=
z?z+NDO7a0@ATaS9G$2Q$?rWAz<=}2Ax+N2C7b#Z!pGSz@0CqD{-QE_N6xV}=elWK+
zQwi?pGN2miCN2Y$u4u|_E-^e|xj)G*u9U(DxV@E9$6c-|?xxE%Au9iG+|HUjos_q-
zCKpeA8*5Vef7mUoNmEQL)}(v>U>xejOMOFBr=4Uywy;cIp-*yU)Ugm-%KxLwDgM#0
z-z%aM{W{Rq&<Pr`^8c_u2cX3R{|<ms&S$;)0f3^YOWAP3`FwNkX@m3;T=`E-Bv$2l
z<%xIXDH5Y3$V~D>041J$sXvJpGZEj4NWQc>X{-Jqy9^1&Q(qUSPjMmF_;%o*Fi`y<
z?}w)n-Op5@zI_gOA6Bfgb0+@wXMeYoQ!5<!R&q+c_-$li$G)o*e~=*@wUpi8RnY{o
z*s3&sMU-5<98TU#NqMgiD_hqtOw!fRkJ4DuO8t;r!&T5jb}aD<=%E^uk%d=357kht
zryoiM#;$rMc;nvT;`fjH7f#L<&kw2=yW06d6<t?4Kcu?5%nmB6a)tAQCJ3cqVig~3
zN@{#kRjPkY7*9I+w}f%J9spdqi}m+|yUQ6j7gLPg;RG-F?j{J6{DzX8gZO<T#N>yK
zh$sA@3^e}QP|g)%zXQ`);w@24ir)?eA;qsDLB+4I^p8a4r(;PJ^|Mj^GcxD*V-tQj
GYWzQuZjfI9

literal 0
HcmV?d00001

diff --git a/NPAnalysis/MUGAST/RunToTreat.txt b/NPAnalysis/MUGAST/RunToTreat.txt
new file mode 100755
index 000000000..237ac3af2
--- /dev/null
+++ b/NPAnalysis/MUGAST/RunToTreat.txt
@@ -0,0 +1,5 @@
+TTreeName 
+	SimulatedTree
+RootFileName 
+	../../Outputs/Simulation/myResult.root
+
diff --git a/NPAnalysis/MUGAST/configs/ConfigMust2.dat b/NPAnalysis/MUGAST/configs/ConfigMust2.dat
new file mode 100755
index 000000000..2c36d1d62
--- /dev/null
+++ b/NPAnalysis/MUGAST/configs/ConfigMust2.dat
@@ -0,0 +1,26 @@
+ConfigMust2
+	MAX_STRIP_MULTIPLICITY 1
+	STRIP_ENERGY_MATCHING_NUMBER_OF_SIGMA 5
+  	STRIP_ENERGY_MATCHING_SIGMA 0.02
+	DISABLE_CHANNEL MM1STRY12
+	DISABLE_CHANNEL MM2STRY12
+	DISABLE_CHANNEL MM3STRY12
+	DISABLE_CHANNEL MM4STRY12
+	DISABLE_CHANNEL MM1STRX12
+   DISABLE_CHANNEL MM2STRX12
+   DISABLE_CHANNEL MM3STRX12
+   DISABLE_CHANNEL MM4STRX12
+	DISABLE_CHANNEL MM1STRY124
+	DISABLE_CHANNEL MM4STRX3 
+	DISABLE_CHANNEL MM4STRX4
+	DISABLE_CHANNEL MM4STRX5
+	DISABLE_CHANNEL MM4STRX6
+	DISABLE_CHANNEL MM4STRX8
+	DISABLE_CHANNEL MM4STRX31
+	DISABLE_ALL MM5
+	DISABLE_ALL MM6
+	DISABLE_ALL MM7
+	DISABLE_ALL MM8
+	SI_X_E_RAW_THRESHOLD 0
+  	CSI_E_RAW_THRESHOLD 0
+  	CSI_SIZE 256
diff --git a/NPAnalysis/MUGAST/configs/ConfigSSSD.dat b/NPAnalysis/MUGAST/configs/ConfigSSSD.dat
new file mode 100755
index 000000000..a56fa0b90
--- /dev/null
+++ b/NPAnalysis/MUGAST/configs/ConfigSSSD.dat
@@ -0,0 +1,4 @@
+ConfigSSSD
+  PEDESTAL_THRESHOLD 0
+  DISABLE_CHANNEL SI2STR1
+  DISABLE_CHANNEL SI4STR13
-- 
GitLab