POLISHED THE TEST SUITE
authorschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 5 Oct 2001 13:52:34 +0000 (13:52 +0000)
committerschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 5 Oct 2001 13:52:34 +0000 (13:52 +0000)
PHOS/testTrackSegment.C [deleted file]
PHOS/testconfig.C [deleted file]
PHOS/testreconDigits.C [deleted file]
PHOS/testreconRecParticles.C [deleted file]
PHOS/testreconRecPoints.C [deleted file]
PHOS/testreconSDigits.C [deleted file]
PHOS/testreconTrackSegments.C [deleted file]
PHOS/testsim.C
PHOS/testsimexam.C [deleted file]
PHOS/testsimglobal.C

diff --git a/PHOS/testTrackSegment.C b/PHOS/testTrackSegment.C
deleted file mode 100644 (file)
index 67f7a72..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-void testTrackSegment (Int_t evt = 0)  
-{
-
-//========= Dynamically link some shared libs
-  if (gClassTable->GetID("AliRun") < 0) 
-  {
-    gROOT->LoadMacro("loadlibs.C");
-    loadlibs();
-  }
-
-//========== Opening galice.root file  
-  TFile * file   = new TFile("galice.root"); 
-
-//========== Get AliRun object from file 
-  gAlice = (AliRun*) file->Get("gAlice");
-
-//=========== Gets the PHOS object and associated geometry from the file 
-  AliPHOSv0 * PHOS  = (AliPHOSv0 *)gAlice->GetDetector("PHOS");
-  AliPHOSGeometry * Geom = AliPHOSGeometry::GetInstance(PHOS->GetGeometry()->GetName(),PHOS->GetGeometry()->GetTitle());
-  
-//========== Creates the Clusterizer
-  AliPHOSClusterizerv1 clusterizer; 
-  clusterizer.SetEmcEnergyThreshold(0.01) ; 
-  clusterizer.SetEmcClusteringThreshold(0.1) ; 
-  clusterizer.SetPpsdEnergyThreshold(0.0000001) ; 
-  clusterizer.SetPpsdClusteringThreshold(0.0000002) ; 
-  clusterizer.SetLocalMaxCut(0.03) ;
-  clusterizer.SetCalibrationParameters(0.,0.0000001) ;
-
-
-//========== Creates the track segment maker
-  AliPHOSTrackSegmentMakerv1 tracksegmentmaker ;
-
-//========== Creates the Reconstructioner  
-  AliPHOSReconstructioner Reconstructioner(clusterizer,tracksegmentmaker);     
-
-  //=========== Connects the various Tree's for evt
-  gAlice->GetEvent(evt);
-  //=========== Gets the Digit TTree
-  gAlice->TreeD()->GetEvent(0) ;     
-  //=========== Gets the number of entries in the Digits array
-  Int_t nId = PHOS->Digits()->GetEntries();    
-  //  printf("AnaPHOSv0.C> Number of entries in the Digit array is %d \n",nId);
-  
-  //=========== Do the reconstruction
-
-  AliPHOSDigit * digit ;
-  TIter next(PHOS->Digits()) ;
-  Float_t Etot=0 ;
-  while((digit = (AliPHOSDigit *)next())) Etot+=clusterizer.Calibrate(digit->GetAmp()) ;
-  cout <<"Found   " << nId << "  digits with total energy " << Etot << endl ;
-
-
-
-    PHOS->Reconstruction(Reconstructioner);  
-
-  //================Make checks===========================
-  AliPHOSDigit * digit ;
-  TIter next(PHOS->Digits()) ;
-  Float_t Etot=0 ;
-  while((digit = (AliPHOSDigit *)next())) Etot+=clusterizer.Calibrate(digit->GetAmp() );
-  cout <<"Found   " << nId << "  digits with total energy " << Etot << endl ;
-
-  TClonesArray * EmcRP = PHOS->EmcClusters() ;
-  Etot = 0.;
-  TIter nextemc(EmcRP) ;
-  AliPHOSEmcRecPoint * emc ;
-  while((emc = (AliPHOSEmcRecPoint *)nextemc())) {
-    Etot+=emc->GetTotalEnergy() ;
-    TVector3 pos ;
-    emc->GetLocalPosition(pos ) ;
-  TMatrix Dummy ;  
-    emc->GetGlobalPosition(pos,Dummy) ;
-  }
-
-  cout << "Found " << EmcRP->GetEntries() << " EMC Clusters with total energy  "<<Etot << endl ; 
-  TClonesArray * PpsdRP = PHOS->PpsdClusters() ;
-  cout << "Found " << PpsdRP->GetEntries() << " Ppsd Clusters " << endl ; 
-
-  TObjArray * trsegl = PHOS->TrackSegments() ;
-  AliPHOSTrackSegment trseg ;
-
-  Int_t NTrackSegments = trsegl->GetEntries() ;
-  Int_t index ;
-  Etot = 0 ;
-  for(index = 0; index < NTrackSegments ; index++){
-    trseg = (AliPHOSTrackSegment * )trsegl->At(index) ;
-    Etot+= trseg->GetEnergy() ;
-    trseg->Print() ;
-  } 
-  cout << "Found " << trsegl->GetEntries() << " Track segments with total energy "<< Etot << endl ;
-  
-}
-
-
diff --git a/PHOS/testconfig.C b/PHOS/testconfig.C
deleted file mode 100644 (file)
index 68cfe74..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-void Config()
-{
-  // 7-DEC-2000 09:00
-  // Switch on Transition Radiation simulation. 6/12/00 18:00
-  // iZDC=1  7/12/00 09:00
-  // ThetaRange is (0., 180.). It was (0.28,179.72) 7/12/00 09:00
-  // Theta range given through pseudorapidity limits 22/6/2001
-  
-  // Set Random Number seed
-  
-  TDatime dat ; 
-  gRandom->SetSeed(dat.GetTime());
-  
-  new     AliGeant3("C++ Interface to Geant3");
-  
-  TFile  *rootfile = new TFile("testPHOS.root", "recreate");
-  rootfile->SetCompressionLevel(2);
-  
-  
-  TGeant3 *geant3 = (TGeant3 *) gMC;
-  
-  //
-  // Set External decayer
-  AliDecayer *decayer = new AliDecayerPythia();
-  
-  decayer->SetForceDecay(kAll);
-  decayer->Init();
-  gMC->SetExternalDecayer(decayer);
-  //
-  //
-  //=======================================================================
-  // ******* GEANT STEERING parameters FOR ALICE SIMULATION *******
-  geant3->SetTRIG(1);         //Number of events to be processed 
-  geant3->SetSWIT(4, 10);
-  geant3->SetDEBU(0, 0, 1);
-  //geant3->SetSWIT(2,2);
-  geant3->SetDCAY(1);
-  geant3->SetPAIR(1);
-  geant3->SetCOMP(1);
-  geant3->SetPHOT(1);
-  geant3->SetPFIS(0);
-  geant3->SetDRAY(0);
-  geant3->SetANNI(1);
-  geant3->SetBREM(1);
-  geant3->SetMUNU(1);
-  geant3->SetCKOV(1);
-  geant3->SetHADR(1);         //Select pure GEANH (HADR 1) or GEANH/NUCRIN (HADR 3)
-  geant3->SetLOSS(2);
-  geant3->SetMULS(1);
-  geant3->SetRAYL(1);
-  geant3->SetAUTO(1);         //Select automatic STMIN etc... calc. (AUTO 1) or manual (AUTO 0)
-  geant3->SetABAN(0);         //Restore 3.16 behaviour for abandoned tracks
-  geant3->SetOPTI(2);         //Select optimisation level for GEANT geometry searches (0,1,2)
-  geant3->SetERAN(5.e-7);
-  
-  Float_t cut = 1.e-3;        // 1MeV cut by default
-  Float_t tofmax = 1.e10;
-  
-  //             GAM ELEC NHAD CHAD MUON EBREM MUHAB EDEL MUDEL MUPA TOFMAX
-  geant3->SetCUTS(cut, cut, cut, cut, cut, cut, cut, cut, cut, cut,
-                 tofmax);
-  //
-  //=======================================================================
-  // ************* STEERING parameters FOR ALICE SIMULATION **************
-  // --- Specify event type to be tracked through the ALICE setup
-  // --- All positions are in cm, angles in degrees, and P and E in GeV
-  
-  int     nParticles = 1;
-  AliGenBox *gener = new AliGenBox(nParticles);
-  
-  gener->SetPart(22) ;
-  gener->SetPtRange(9.99, 10.00);
-  gener->SetPhiRange(220, 320);
-  // Set pseudorapidity range from -8 to 8.
-  Float_t thmin = EtaToTheta(0.12);   // 220 theta min. <---> eta max
-  Float_t thmax = EtaToTheta(-0.12);  // 320 theta max. <---> eta min 
-  gener->SetThetaRange(thmin,thmax);
-  gener->SetOrigin(0, 0, 0);  //vertex position
-  gener->SetSigma(0, 0, 0);   //Sigma in (X,Y,Z) (cm) on IP position
-  gener->Init();
-  // 
-  // Activate this line if you want the vertex smearing to happen
-  // track by track
-  //
-  //gener->SetVertexSmear(perTrack); 
-  
-  gAlice->SetField(0,2);  //Specify maximum magnetic field in Tesla (neg. ==> default field)
-  
-  //=================== Alice BODY parameters =============================
-  AliBODY *BODY = new AliBODY("BODY", "Alice envelop");
-  
-  
-  AliPHOS *PHOS = new AliPHOSv1("PHOS", "GPS2");
-  AliPHOSGetter * gime = AliPHOSGetter::GetInstance() ;
-  AliPHOSQAMeanChecker * hm  = static_cast<AliPHOSQAMeanChecker *>gime->QATasks("HitsMul");
-  AliPHOSQAMeanChecker * te  = static_cast<AliPHOSQAMeanChecker *>gime->QATasks("TotEner");
-  AliPHOSQAMeanChecker * hmB = static_cast<AliPHOSQAMeanChecker *>gime->QATasks("HitsMulB");
-  AliPHOSQAMeanChecker * teB = static_cast<AliPHOSQAMeanChecker *>gime->QATasks("TotEnerB");
-  hm->Set(62.18, 23.81) ;
-  hm->Print() ; 
-  te->Set(8.092, 3.06) ;
-  hmB->Set(63.498, 24.348) ;
-  teB->Set(8.363, 3.44) ;
-       
-}
-
-Float_t EtaToTheta(Float_t arg){
-  return (180./TMath::Pi())*2.*atan(exp(-arg));
-}
diff --git a/PHOS/testreconDigits.C b/PHOS/testreconDigits.C
deleted file mode 100644 (file)
index 7e05a95..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "AliPHOSDigitizer.h"
-#include "AliPHOSGetter.h"
-#include "TSystem.h"
-#include "AliPHOSDigit.h"
-
-
-void testreconDigits(Int_t nevent = 1, const char *config="testconfig.C")
-{ const Float_t maxDigits = 3489.41 ;
-  const Float_t widDigits = TMath::Sqrt(maxDigits) ;
-  AliPHOSDigitizer *d = new AliPHOSDigitizer("testPHOS.root","test suite");
-  AliPHOSGetter * gime = AliPHOSGetter::GetInstance() ;
-  d->ExecuteTask("deb"); 
-  Float_t nDigits = (Float_t)(gime->Digitizer()->GetDigitsInRun()) / gime->MaxEvent();
-  
-  if ( nDigits < maxDigits-widDigits || nDigits > maxDigits+widDigits ) {
-    cerr<<"__________________________________________________________________"<<endl;
-    cerr<<" "<<endl;
-    cerr<<"             MESS ==> Error detected in the Digits process. Sending error file to PHOS director."<<endl;
-    cerr<<"__________________________________________________________________"<<endl;
-   // gSystem->Exec("uuencode $ALICE_ROOT/PHOS/testPHOS.root testPHOS.root | mail -s 'PHOS INSTALLATION ERROR' schutz@in2p3.fr");
-  }
- cerr<<"__________________________________________________________________"<<endl;
-  cerr<<" "<<endl;
-  cerr<<"             MESS ==> Digits process ended successfully."<<endl;
-  cerr<<"__________________________________________________________________"<<endl;
-}
-
diff --git a/PHOS/testreconRecParticles.C b/PHOS/testreconRecParticles.C
deleted file mode 100644 (file)
index 29c4759..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#include "AliPHOSPID.h"
-#include "AliPHOSGetter.h"
-#include "AliPHOSPIDv1.h"
-#include "TSystem.h"
-
-void testreconRecParticles(Int_t nevent = 1, const char *config="testconfig.C")
-
-{ 
-
-  const Float_t maxRecParticles = 1 ;
-  const Float_t widRecParticles = TMath::Sqrt(maxRecParticles) ;
-  TString name = "test suite" ;
-
-
-  AliPHOSPID * pid = new AliPHOSPIDv1("testPHOS.root",name.Data());
-  AliPHOSGetter * gime = AliPHOSGetter::GetInstance() ;
-  pid->ExecuteTask("deb");   
-  Float_t nRecParticles =  (Float_t) (gime->PID(name.Data())->GetRecParticlesInRun())/gime->MaxEvent();
- if ( nRecParticles < maxRecParticles-0.25 || nRecParticles > maxRecParticles+0.25 ) {
-    cerr<<"__________________________________________________________________"<<endl;
-    cerr<<" "<<endl;
-    cerr<<"             MESS ==> Error detected in the RecParticles process. Sending error file to PHOS director."<<endl;
-    cerr<<"__________________________________________________________________"<<endl;
-   // gSystem->Exec("uuencode $ALICE_ROOT/PHOS/testPHOS.root testPHOS.root | mail -s 'PHOS INSTALLATION ERROR' schutz@in2p3.fr");
- }
-  cerr<<"__________________________________________________________________"<<endl;
-  cerr<<" "<<endl;
-  cerr<<"             MESS ==> RecParticles process ended successfully."<<endl;
-  cerr<<"__________________________________________________________________"<<endl;
-
- cerr<<"_____________________________________________________________________"<<endl;
-  cerr<<" "<<endl;
-  cerr<<"             MESS ==> reconstruction ended successfully."<<endl;
-  cerr<<"_____________________________________________________________________"<<endl;
-
-}
diff --git a/PHOS/testreconRecPoints.C b/PHOS/testreconRecPoints.C
deleted file mode 100644 (file)
index 1a5bc01..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#include "AliPHOSClusterizer.h"
-#include "AliPHOSGetter.h"
-#include "AliPHOSClusterizerv1.h"
-#include "TSystem.h"
-
-
-void testreconRecPoints(Int_t nevent = 1, const char *config="testconfig.C")
-{
-  const Float_t maxRecPoints = 222.83 ;
-  const Float_t widRecPoints = TMath::Sqrt(maxRecPoints) ;
-  TString name = "test suite" ;
-  AliPHOSClusterizer * cluster = new  AliPHOSClusterizerv1("testPHOS.root", name.Data());
-  AliPHOSGetter * gime = AliPHOSGetter::GetInstance();
-  cluster->ExecuteTask("deb");
-  Float_t nRecPoints =  (Float_t) (gime->Clusterizer(name.Data())->GetRecPointsInRun()) / gime->MaxEvent();
-   if ( nRecPoints < maxRecPoints-widRecPoints || nRecPoints > maxRecPoints+widRecPoints ) {
-    cerr<<"__________________________________________________________________"<<endl;
-    cerr<<" "<<endl;
-    cerr<<"             MESS ==> Error detected in the Clusterizing process. Sending error file to PHOS director."<<endl;
-    cerr<<"__________________________________________________________________"<<endl;
-   // gSystem->Exec("uuencode $ALICE_ROOT/PHOS/testPHOS.root testPHOS.root | mail -s 'PHOS INSTALLATION ERROR' schutz@in2p3.fr");
- }
-  cerr<<"__________________________________________________________________"<<endl;
-  cerr<<" "<<endl;
-  cerr<<"             MESS ==> Cluster process ended successfully."<<endl;
-  cerr<<"__________________________________________________________________"<<endl;
-
-}
diff --git a/PHOS/testreconSDigits.C b/PHOS/testreconSDigits.C
deleted file mode 100644 (file)
index b4453ae..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "AliPHOSGetter.h"
-#include "TSystem.h"
-#include "AliPHOSDigit.h"
-#include "AliPHOSSDigitizer.h"
-
-void testreconSDigits(Int_t nevent = 1, const char *config="testconfig.C")
-{
-  cerr<<" ___________________________________________________________________ "<<endl;
-  cerr<<" "<<endl;
-  cerr<<"           MESS ==> Beginning of the PHOS reconstruction. "<<endl;
-  cerr<<" ___________________________________________________________________ "<<endl;
-  const Float_t maxSDigits = 62.89 ;
-  const Float_t widSDigits = TMath::Sqrt(maxSDigits) ;
-  AliPHOSSDigitizer *sd = new AliPHOSSDigitizer("testPHOS.root","test suite");
-  AliPHOSGetter * gime = AliPHOSGetter::GetInstance() ;
-  sd->ExecuteTask("deb"); 
-  Float_t nSDigits =  (Float_t) (gime->SDigitizer()->GetSDigitsInRun()) / gime->MaxEvent();
-  
-   if ( nSDigits < maxSDigits-widSDigits || nSDigits > maxSDigits+widSDigits ) {
-    cerr<<"__________________________________________________________________"<<endl;
-    cerr<<" "<<endl;
-    cerr<<"             MESS ==> Error detected in the SDigits process. Sending error file to PHOS director."<<endl;
-    cerr<<"__________________________________________________________________"<<endl;
-   // gSystem->Exec("uuencode $ALICE_ROOT/PHOS/testPHOS.root testPHOS.root | mail -s 'PHOS INSTALLATION ERROR' schutz@in2p3.fr");
- }
-  cerr<<"__________________________________________________________________"<<endl;
-  cerr<<" "<<endl;
-  cerr<<"             MESS ==> SDigits process ended successfully."<<endl;
-  cerr<<"__________________________________________________________________"<<endl;
-}
diff --git a/PHOS/testreconTrackSegments.C b/PHOS/testreconTrackSegments.C
deleted file mode 100644 (file)
index b9240fc..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#include " AliPHOSTrackSegmentMaker.h"
-#include " AliPHOSTrackSegmentMakerv1.h"
-#include "AliPHOSGetter.h"
-#include "TSystem.h"
-
-void testreconTrackSegments(Int_t nevent = 1, const char *config="testconfig.C")
-
-{ 
-  const Float_t maxTrackSegments = 1 ;
-  const Float_t widTrackSegments = TMath::Sqrt(maxTrackSegments) ;
-  TString name = "test suite" ;
-  AliPHOSTrackSegmentMaker * tracks = new AliPHOSTrackSegmentMakerv1("testPHOS.root",name.Data());
-  AliPHOSGetter * gime = AliPHOSGetter::GetInstance() ;
-  tracks->ExecuteTask("deb");
-  Float_t nTrackSegments =  (Float_t) (gime->TrackSegmentMaker(name.Data())->GetTrackSegmentsInRun()) / gime->MaxEvent();
-   if ( nTrackSegments < maxTrackSegments-0.25 || nTrackSegments > maxTrackSegments+0.25 ) {
-    cerr<<"__________________________________________________________________"<<endl;
-    cerr<<" "<<endl;
-    cerr<<"             MESS ==> Error detected in the TrackSegments process. Sending error file to PHOS director."<<endl;
-    cerr<<"__________________________________________________________________"<<endl;
-   // gSystem->Exec("uuencode $ALICE_ROOT/PHOS/testPHOS.root testPHOS.root | mail -s 'PHOS INSTALLATION ERROR' schutz@in2p3.fr");
- }
-  cerr<<"__________________________________________________________________"<<endl;
-  cerr<<" "<<endl;
-  cerr<<"             MESS ==> TrackSegments process ended successfully."<<endl;
-  cerr<<"__________________________________________________________________"<<endl;
-}
-
index 4e09b0597327b7270020992c338260caab5d1301..30378336ace6145f62e503142e527da54110cd23 100644 (file)
@@ -10,12 +10,10 @@ void testsim (Int_t nevent=1, const char *config="testconfig.C")
   TStopwatch timer;
   timer.Start();
 
-  nevent=10 ; 
-  gAlice->Init(config);
-   cerr<<" ___________________________________________________________________ "<<endl;
+  gAlice->Init(config); 
+  cerr<<" ___________________________________________________________________ "<<endl;
   cerr<<" "<<endl;
-  cerr<<"             MESS ==> The simulation will last about 4 minutes."<<endl;
+  cerr<<"             MESS ==> " << nevent << " : The simulation will last about 4 minutes."<<endl;
    cerr<<" ___________________________________________________________________ "<<endl;
   gAlice->Run(nevent);
   timer.Stop();
diff --git a/PHOS/testsimexam.C b/PHOS/testsimexam.C
deleted file mode 100644 (file)
index d72e84a..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-#include "AliPHOSGetter.h"
-#include "TH2.h"
-#include "TH1.h"
-#include "TFile.h"
-#include "TTree.h"
-#include "TBranch.h"
-#include "TClonesArray.h"
-#include "TCanvas.h"
-#include "TSystem.h"
-#include "AliPHOSHit.h"
-#include "TF1.h"
-#include "TFormula.h"
-#include "TFolder.h"
-#include "TStopwatch.h"
-#include "TObjArray.h"
-#include "AliPHOSGeometry.h"
-
-
-
-
-void testsimexam (Int_t nevent=1, const char *config="testconfig.C")
-{
-  //
-  // Simple macro to run aliroot in a batch mode
-  //
-  cerr<<" __________________________________________________________________ "<<endl;
-  cerr<< " " <<endl;
-  cerr<<"           MESS ==> Beginning of the simulation examination."<<endl;
-  cerr<<" __________________________________________________________________ "<<endl;
-  // Definition of the alarm bounds
-     const Float_t maxAlaHitsM = 12.79  ;  // total multiplicity
-     const Float_t maxAlaTotEn = 19.34  ;  // total energy
-     const Float_t maxAlaTotEnB = 18.35 ;  // per block multiplicity
-     const Float_t maxAlaHitsMB = 11.1  ;  // per block energy
-   
-       // boolean which will test if there is an alarm
-  
-   Int_t boolala; 
-   boolala = 0;
-   // define the array in which the events that have not reach th EMCA will be put.
-  
-   
-
-   TStopwatch timer;
-   timer.Start();
-
-   // Get the number of events generated in the simulation
-
-  AliPHOSGetter * gime = AliPHOSGetter::GetInstance("testPHOS.root") ; 
-  gime->Event(0,"Q");
-  Int_t maxevent = gime->MaxEvent() ; 
-  // Examine the alarms
-
-   TObjArray * alahm = (TObjArray*)(gime->Alarms()->FindObject("HitsM"));
-   Float_t ratiohm = 100.0*(Float_t)alahm->GetEntries()/(Float_t)maxevent ;  
-  
-   TObjArray * alaet = (TObjArray*)(gime->Alarms()->FindObject("TotEn"));
-   Float_t ratioet = 100.0*(Float_t)alaet->GetEntries()/(Float_t)maxevent ; 
-  
-
-   // Define the alarms per block and examine them
-   char namemul[80], namen[80];
-   TObjArray* alahmb[5];
-   TObjArray* alaenb[5];
-   Float_t ratiohmb[5], ratioenb[5];
-   for (Int_t i = 0 ; i < 5 ; i++)
-     {
-        sprintf(namemul,"HitsMB%d",i+1);
-        sprintf(namen,"TotEnB%d",i+1);
-        alahmb[i] = (TObjArray*) (gime->Alarms()->FindObject(namemul));
-       ratiohmb[i] = 100.0*(Float_t)alahmb[i]->GetEntries()/(Float_t)maxevent;        
-        alaenb[i] = (TObjArray*)(gime->Alarms()->FindObject(namen));
-        ratioenb[i] = 100.0*(Float_t)alaenb[i]->GetEntries()/(Float_t)maxevent;      
-        if (ratiohmb[i]>maxAlaHitsMB){
-          boolala = 1; 
-          cerr<<" _____________________________________________________________ "<<endl;
-          cerr<< " " <<endl;
-          cerr << "             MESS ==> Examination detected an error in "<<namemul << endl ;    
-          cerr<<" _____________________________________________________________ "<<endl;
-       }
-        if (ratioenb[i]>maxAlaTotEnB) {
-          boolala = 1;
-          cerr<<" _____________________________________________________________ "<<endl;
-          cerr<< " " <<endl;
-          cerr << "             MESS ==> Examination detected an error in "<<namen << endl ;
-          cerr<<" _____________________________________________________________ "<<endl;
-       }
-           
-     }
-
-  timer.Stop();
-  timer.Print();
-
-      
-  if (ratiohm>maxAlaHitsM){
-     boolala = 1;
-     cerr<<" _____________________________________________________________ "<<endl;
-     cerr<< " " <<endl;
-     cerr << "             MESS ==> Examination detected an error in HitsM." << endl ;
-     cerr<<" _____________________________________________________________ "<<endl;
-  }
-
-  if (ratioet>maxAlaTotEn){
-     boolala = 1;
-     cerr<<" _____________________________________________________________ "<<endl;
-     cerr<< " " <<endl;
-     cerr << "             MESS ==> Examination detected an error in TotEn." << endl ;
-     cerr<<" _____________________________________________________________ "<<endl;
-  }
-
-  // Condition that will launch the general loop that builds the histograms in order to allow a further analysis.
-  
-    if ( boolala == 1 ) {
-  cerr<<" _____________________________________________________________ "<<endl;
-  cerr<< " " <<endl;
-  cerr << "             MESS ==> Examination sets up the file that will be sent to PHOS director (30s). " << endl ;
-  cerr<<" _____________________________________________________________ "<<endl;    
-      Int_t index = 0 ; 
-      Int_t nhits = 0 ; 
-    
-      TH1F * his = new TH1F("Total Multiplicity", "Total Multiplicity in PHOS", 200, 0., 200.) ;
-      TH1F * hisnrg = new TH1F("Total Energy", "Total energy in PHOS", 200, 0., 12.) ;
-    
-     // name and define the different histograms per block involved in the analysis
-      TClonesArray hisba("TH1F") ;
-      TClonesArray hisbanrg("TH1F") ;  
-      for (Int_t i = 0 ; i < 6 ; i++)
-       {
-         char name[80], title[80] ; 
-         sprintf(name,"multiplicity for block %d",i) ; 
-         sprintf(title,"multiplicity per blocks, block %d",i) ;
-         new(hisba[i]) TH1F(name, title, 100, 0., 100.) ; 
-      
-
-         char namenrg[80], titlenrg[80] ; 
-         sprintf(namenrg,"total energy for block %d",i) ; 
-         sprintf(titlenrg,"total energy per block, block %d",i) ;          
-         new(hisbanrg[i]) TH1F(namenrg, titlenrg, 200, 0., 12.) ; 
-       }
-      // define the global histograms, the hit pointer and give the means to get the actual block reached by the photon
-      AliPHOSHit * hit;
-      TH1F * hist ; 
-      TH1F * histnrg;
-      TH2F * hbiz = new TH2F ("hbiz","hbiz",200.,0.,200.,200.,0.,12.);
-      AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ; 
-
-
-      // the very general loop
-      for (index = 0 ; index < maxevent ; index++)
-       {
-        //get the number of the event
-         gime->Event(index) ; 
-         // get the number of cells reached during this event and fill the total multiplicity histogram
-         Int_t n = gime->Hits()->GetEntries() ;
-         nhits += n ; 
-         his->Fill(n) ;  
-         // Get the data per block      
-         TClonesArray * hita = (TClonesArray *) gime -> Hits();
-         TIter next(hita);
-         Float_t Et = 0.;
-         Int_t id = 0, block = 0;
-         Int_t nhit[6], rid[4];
-         Float_t etblock[6]; 
-         for ( Int_t i = 0; i < 6 ; i++) { 
-          nhit[i] = 0 ; 
-          etblock[i] = 0 ;
-        }
-     
-        while ( (hit = (AliPHOSHit *) next()) ) {
-                id = hit->GetId();
-                if  (geom->IsInEMC(id) ) { 
-                  Et += ( hit -> GetEnergy());
-                  geom->AbsToRelNumbering(id,rid) ;
-                  block = rid[0];
-                  nhit[block]++  ;
-                  etblock[block] +=  ( hit -> GetEnergy());
-                }
-                }
-
-
-        //Fill all the histograms but total multiplicity, already done
-        hist = static_cast<TH1F*>(hisba.At(block)) ; 
-        hist->Fill(nhit[block]) ; 
-        histnrg = static_cast<TH1F*>(hisbanrg.At(block)) ;
-        histnrg->Fill(etblock[block]);
-        hisnrg -> Fill(Et);
-         hbiz->Fill(n,Et);              
-       }   
-        
-      nhits /= maxevent ; 
-      cerr << "av = " << nhits << endl ;
-      TFile * file = gROOT -> GetFile("testPHOS.root");
-      file -> Write();
-      his->Draw() ;
-      hisnrg->Draw() ;
-      hbiz->Draw();
-
-      //Put the histograms in the root file
-      for (Int_t i = 0 ; i < 6 ; i++)  { 
-         hist = static_cast<TH1F*>(hisba.At(i)) ;
-         histnrg = static_cast<TH1F*>(hisbanrg.At(i));
-     
-        
-        // cout << hist << endl << i << endl ; 
-        hist->Draw();
-        histnrg->Draw(); 
-        
-   
-       }
-      
-      file->Write() ;
-      hisba.Delete() ;
-      hisbanrg.Delete() ; 
-      file->Close();
-      //  gSystem->Exec("uuencode $ALICE_ROOT/PHOS/testPHOS.root testPHOS.root | mail -s 'PHOS INSTALLATION ERROR  ' schutz@in2p3.fr"); 
-   
-    }
-  cerr<<" _____________________________________________________________ "<<endl;
-  cerr<< " " <<endl;
-  cerr << "             MESS ==> Examination ended successfully. " << endl ;
-  cerr<<" _____________________________________________________________ "<<endl;   
-}
index 0a1afaa610f1afbeebdb2a89b2d809eb36334525..2901f4e97d2b5c5b5b0d41e869f655d3217dd304 100644 (file)
@@ -1,4 +1,4 @@
-#include "AliPHOSGetter.h"
+// Root
 #include "TH2.h"
 #include "TH1.h"
 #include "TFile.h"
@@ -7,12 +7,16 @@
 #include "TClonesArray.h"
 #include "TCanvas.h"
 #include "TSystem.h"
-#include "AliPHOSHit.h"
+#include "TString.h"
 #include "TF1.h"
 #include "TFormula.h"
 #include "TFolder.h"
 #include "TStopwatch.h"
 #include "TObjArray.h"
+
+//AliRoot
+#include "AliPHOSHit.h"
+#include "AliPHOSGetter.h"
 #include "AliPHOSGeometry.h"
 #include "AliPHOSDigit.h"
 #include "AliPHOSSDigitizer.h"
 #include "AliPHOSPID.h"
 #include "AliPHOSPIDv1.h"
 
+Bool_t sim_exam() ;
+Bool_t sdigit() ;
+Bool_t digit() ;
+Bool_t recpoint() ;
+Bool_t track() ;
+Bool_t particle() ;
+void write_info(TString) ;
 
-void testsimglobal(Int_t nevent = 1, const char *config="testconfig.C")
+
+//____________________________________________________________________________ 
+void testsimglobal() 
 {
-  //
-  // Simple macro to run aliroot in a batch mode
-  //
-  cerr<<" __________________________________________________________________ "<<endl;
-  cerr<< " " <<endl;
-  cerr<<"             MESS ==> Beginning of the simulation examination."<<endl;
-  cerr<<" __________________________________________________________________ "<<endl;
-  // Definition of the alarm bounds
-     const Float_t maxAlaHitsM = 12.79  ;  // total multiplicity
-     const Float_t maxAlaTotEn = 19.34  ;  // total energy
-     const Float_t maxAlaTotEnB = 18.35 ;  // per block multiplicity
-     const Float_t maxAlaHitsMB = 11.1  ;  // per block energy
-   
-       // boolean which will test if there is an alarm
-   Int_t boolerror = 0;
-   
-   // define the array in which the events that have not reach th EMCA will be put.
   
-   
+  Bool_t error = kFALSE ;
+  TString mess("") ;
+  
+  if ( sim_exam() ){
+    mess = "Examination ended successfully." ;
+    write_info(mess) ;
+  }
+  else
+    error = kTRUE ;
+  
+  if (!error){
+    mess = "Beginning of the PHOS reconstruction."  ;
+    write_info(mess) ;
+    if(sdigit()){
+      mess = "SDigits process ended successfully."  ;
+      write_info(mess) ;
+    }
+    else
+      error = kTRUE ;
+  }
+  
+  if (!error){
+    if (digit()){
+      mess = "Digits process ended successfully."  ;
+      write_info(mess) ;
+    }
+    else
+      error = kTRUE ;
+  }
+  
+  if (!error){
+    if (recpoint()){
+      mess = "Cluster process ended successfully."  ;
+      write_info(mess) ;
+    }
+    else
+      error = kTRUE ;
+  }
+  
+  if (!error){
+    if (track()){
+      mess = "TrackSegments process ended successfully."  ;
+      write_info(mess) ;
+    }
+    else
+      error = kTRUE ;
+  }
+  
+  if (!error){
+    if (particle()){
+      mess = "RecParticles process ended successfully."  ;
+      write_info(mess) ;
+    }
+    else
+      error = kTRUE ;
+  }
+  
+  if(!error){
+    mess = "reconstruction ended successfully."  ;
+    write_info(mess) ;
+  }
+  else {
+    gSystem->Exec("uuencode $ALICE_ROOT/PHOS/testPHOS.root testPHOS.root | mail -s 'PHOS INSTALLATION ERROR' almajor@caramail.com") ;
+    mess = "Error message to PHOS director has been sent, please wait for his answer before launching the whole simulation again."  ;
+    write_info(mess) ;
+  }
+}
 
-   TStopwatch timer;
-   timer.Start();
 
-   // Get the number of events generated in the simulation
+//____________________________________________________________________________ 
+Bool_t sim_exam()
+{
+  
+  // Definition of the alarm bounds for the examination
+  const Float_t maxAlaHitsM = 12.79  ;  // total multiplicity
+  const Float_t maxAlaTotEn = 19.34  ;  // total energy
+  const Float_t maxAlaTotEnB = 18.35 ;  // per block multiplicity
+  const Float_t maxAlaHitsMB = 11.1  ;  // per block energy
+  
+  TString mess("") ;
 
-  AliPHOSGetter * gime = AliPHOSGetter::GetInstance("testPHOS.root") ; 
-  Int_t maxevent = gime->MaxEvent() ; 
-  gime->Event(0,"Q");
+  mess = "Beginning of the simulation examination." ;
+  write_info(mess) ;
+  
+  // define the array in which the events that have not reach th EMCA will be put.
+  Bool_t error = kFALSE ;
+  
+  TStopwatch timer ;
+  timer.Start() ;
+   
+  // Get the number of events generated in the simulation
+  AliPHOSGetter * gime = AliPHOSGetter::GetInstance("testPHOS.root") ;
+  Int_t maxevent = gime->MaxEvent() ;
+  gime->Event(0,"Q") ;
+  
   // Examine the alarms
-
-   TObjArray * alahm = (TObjArray*)(gime->Alarms()->FindObject("HitsM"));
-   Float_t ratiohm = 100.0*(Float_t)alahm->GetEntries()/(Float_t)maxevent ;  
+  TObjArray * alahm = dynamic_cast<TObjArray*>(gime->Alarms()->FindObject("HitsM")) ;
+  Float_t ratiohm = 100.0*static_cast<Float_t>(alahm->GetEntries())/static_cast<Float_t>(maxevent) ;
   
-   TObjArray * alaet = (TObjArray*)(gime->Alarms()->FindObject("TotEn"));
-   Float_t ratioet = 100.0*(Float_t)alaet->GetEntries()/(Float_t)maxevent ; 
+  TObjArray * alaet = dynamic_cast<TObjArray*>(gime->Alarms()->FindObject("TotEn")) ;
+  Float_t ratioet = 100.0*static_cast<Float_t>(alaet->GetEntries())/static_cast<Float_t>(maxevent) ;
   
-
-   // Define the alarms per block and examine them
-   char namemul[80], namen[80];
-   TObjArray* alahmb[5];
-   TObjArray* alaenb[5];
-   Float_t ratiohmb[5], ratioenb[5];
-   for (Int_t i = 0 ; i < 5 ; i++)
-     {
-        sprintf(namemul,"HitsMB%d",i+1);
-        sprintf(namen,"TotEnB%d",i+1);
-        alahmb[i] = (TObjArray*) (gime->Alarms()->FindObject(namemul));
-       ratiohmb[i] = 100.0*(Float_t)alahmb[i]->GetEntries()/(Float_t)maxevent;        
-        alaenb[i] = (TObjArray*)(gime->Alarms()->FindObject(namen));
-        ratioenb[i] = 100.0*(Float_t)alaenb[i]->GetEntries()/(Float_t)maxevent;      
-        if (ratiohmb[i]>maxAlaHitsMB){
-          boolerror = 1; 
-          cerr<<" _____________________________________________________________ "<<endl;
-          cerr<< " " <<endl;
-          cerr << "             MESS ==> Examination detected an error in "<<namemul << endl ;    
-          cerr<<" _____________________________________________________________ "<<endl;
-       }
-        if (ratioenb[i]>maxAlaTotEnB) {
-          boolerror = 1;
-          cerr<<" _____________________________________________________________ "<<endl;
-          cerr<< " " <<endl;
-          cerr << "             MESS ==> Examination detected an error in "<<namen << endl ;
-          cerr<<" _____________________________________________________________ "<<endl;
-       }
-           
-     }
-
-  timer.Stop();
-  timer.Print();
-
-      
-  if (ratiohm>maxAlaHitsM){
-     boolerror = 1;
-     cerr<<" _____________________________________________________________ "<<endl;
-     cerr<< " " <<endl;
-     cerr << "             MESS ==> Examination detected an error in HitsM." << endl ;
-     cerr<<" _____________________________________________________________ "<<endl;
+  // Define the alarms per block and examine them
+  char namemul[80], namen[80] ;
+  TObjArray* alahmb[5] ;
+  TObjArray* alaenb[5] ;
+  Float_t ratiohmb[5], ratioenb[5] ;
+  
+  Int_t i = 0 ;
+  for (i = 0 ; i < 5 ; i++){
+    sprintf(namemul,"HitsMB%d",i+1) ;
+    sprintf(namen,"TotEnB%d",i+1) ;
+    alahmb[i]   = (TObjArray*) (gime->Alarms()->FindObject(namemul)) ;
+    ratiohmb[i] = 100.0*(Float_t)alahmb[i]->GetEntries()/(Float_t)maxevent ;
+    alaenb[i]   = (TObjArray*)(gime->Alarms()->FindObject(namen)) ;
+    ratioenb[i] = 100.0*(Float_t)alaenb[i]->GetEntries()/(Float_t)maxevent ;
+    
+    if (ratiohmb[i] > maxAlaHitsMB){
+      error = kTRUE ;
+      mess = "Examination detected an error in " + TString(namemul) ;
+      write_info(mess) ;
+    }
+    
+    if (ratioenb[i] > maxAlaTotEnB) {
+      error = kTRUE ;
+      mess = "Examination detected an error in " + TString(namen)  ;
+      write_info(mess) ;
+    }
   }
-
+  
+  
+  timer.Stop() ;
+  timer.Print() ;
+  
+  
+  if (ratiohm > maxAlaHitsM){
+    error = kTRUE ;
+    mess = "Examination detected an error in HitsM." ;
+    write_info(mess) ;
+  }
+  
   if (ratioet>maxAlaTotEn){
-     boolerror = 1;
-     cerr<<" _____________________________________________________________ "<<endl;
-     cerr<< " " <<endl;
-     cerr << "             MESS ==> Examination detected an error in TotEn." << endl ;
-     cerr<<" _____________________________________________________________ "<<endl;
+    error = kTRUE ;
+    mess = "Examination detected an error in TotEn." ;
+    write_info(mess) ;
   }
-
+  
   // Condition that will launch the general loop that builds the histograms in order to allow a further analysis.
   
-    if ( boolerror == 1 ) {
-  cerr<<" _____________________________________________________________ "<<endl;
-  cerr<< " " <<endl;
-  cerr << "             MESS ==> Examination sets up the file that will be sent to PHOS director (30s). " << endl ;
-  cerr<<" _____________________________________________________________ "<<endl;    
-      Int_t index = 0 ; 
-      Int_t nhits = 0 ; 
+  if (!error)
+    return kTRUE ;
+  else {
+    mess = "Examination sets up the file that will be sent to PHOS director (30s)." ;
+    write_info(mess) ;
     
-      TH1F * his = new TH1F("Total Multiplicity", "Total Multiplicity in PHOS", 200, 0., 200.) ;
-      TH1F * hisnrg = new TH1F("Total Energy", "Total energy in PHOS", 200, 0., 12.) ;
+    Int_t index = 0 ;
+    Int_t nhits = 0 ;
     
-     // name and define the different histograms per block involved in the analysis
-      TClonesArray hisba("TH1F") ;
-      TClonesArray hisbanrg("TH1F") ;  
-      for (Int_t i = 0 ; i < 6 ; i++)
-       {
-         char name[80], title[80] ; 
-         sprintf(name,"multiplicity for block %d",i) ; 
-         sprintf(title,"multiplicity per blocks, block %d",i) ;
-         new(hisba[i]) TH1F(name, title, 100, 0., 100.) ; 
+    TH1F * his    = new TH1F("Total Multiplicity", "Total Multiplicity in PHOS", 200, 0., 200.) ;
+    TH1F * hisnrg = new TH1F("Total Energy", "Total energy in PHOS", 200, 0., 12.) ;
+    
+    // name and define the different histograms per block involved in the analysis
+    
+    TClonesArray hisba("TH1F") ;
+    TClonesArray hisbanrg("TH1F") ;
+    Int_t i = 0 ;
+    
+    char name[80], title[80] ;
+    for (i = 0 ; i < 6 ; i++) {
+      sprintf(name,"multiplicity for block %d",i) ;
+      sprintf(title,"multiplicity per blocks, block %d",i) ;
+      new(hisba[i]) TH1F(name, title, 100, 0., 100.) ;
       
-
-         char namenrg[80], titlenrg[80] ; 
-         sprintf(namenrg,"total energy for block %d",i) ; 
-         sprintf(titlenrg,"total energy per block, block %d",i) ;          
-         new(hisbanrg[i]) TH1F(namenrg, titlenrg, 200, 0., 12.) ; 
-       }
-      // define the global histograms, the hit pointer and give the means to get the actual block reached by the photon
-      AliPHOSHit * hit;
-      TH1F * hist ; 
-      TH1F * histnrg;
-      TH2F * hbiz = new TH2F ("hbiz","hbiz",200.,0.,200.,200.,0.,12.);
-      AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ; 
-
-
-      // the very general loop
-      for (index = 0 ; index < maxevent ; index++)
-       {
-        //get the number of the event
-         gime->Event(index,"H") ; 
-         // get the number of cells reached during this event and fill the total multiplicity histogram
-         Int_t n = gime->Hits()->GetEntries() ;
-         nhits += n ; 
-         his->Fill(n) ;  
-         // Get the data per block      
-         TClonesArray * hita = (TClonesArray *) gime -> Hits();
-         TIter next(hita);
-         Float_t Et = 0.;
-         Int_t id = 0, block = 0;
-         Int_t nhit[6], rid[4];
-         Float_t etblock[6]; 
-         for ( Int_t i = 0; i < 6 ; i++) { 
-          nhit[i] = 0 ; 
-          etblock[i] = 0 ;
-        }
-     
-        while ( (hit = (AliPHOSHit *) next()) ) {
-                id = hit->GetId();
-                if  (geom->IsInEMC(id) ) { 
-                  Et += ( hit -> GetEnergy());
-                  geom->AbsToRelNumbering(id,rid) ;
-                  block = rid[0];
-                  nhit[block]++  ;
-                  etblock[block] +=  ( hit -> GetEnergy());
-                }
-                }
-
-
-        //Fill all the histograms but total multiplicity, already done
-        hist = static_cast<TH1F*>(hisba.At(block)) ; 
-        hist->Fill(nhit[block]) ; 
-        histnrg = static_cast<TH1F*>(hisbanrg.At(block)) ;
-        histnrg->Fill(etblock[block]);
-        hisnrg -> Fill(Et);
-         hbiz->Fill(n,Et);              
-       }   
-        
-      nhits /= maxevent ; 
-      cerr << "av = " << nhits << endl ;
-      TFile * file = gROOT -> GetFile("testPHOS.root");
-      file -> Write();
-      his->Draw() ;
-      hisnrg->Draw() ;
-      hbiz->Draw();
-
-      //Put the histograms in the root file
-      for (Int_t i = 0 ; i < 6 ; i++)  { 
-         hist = static_cast<TH1F*>(hisba.At(i)) ;
-         histnrg = static_cast<TH1F*>(hisbanrg.At(i));
-     
-        
-        // cout << hist << endl << i << endl ; 
-        hist->Draw();
-        histnrg->Draw(); 
-        
-   
-       }
+      sprintf(name,"total energy for block %d",i) ;
+      sprintf(title,"total energy per block, block %d",i) ;
+      new(hisbanrg[i]) TH1F(name, title, 200, 0., 12.) ;
+    }
+    
+    // define the global histograms, the hit pointer and give the means to get the actual block reached by the photon
+    
+    AliPHOSHit * hit ;
+    TH1F * hist ;
+    TH1F * histnrg ;
+    TH2F * hbiz = new TH2F ("hbiz","hbiz", 200, 0., 200., 200, 0., 12.) ;
+    const AliPHOSGeometry * geom = gime->PHOSGeometry() ;
+    
+    // the very general loop
+    
+    for (index = 0 ; index < maxevent ; index++) {
+      //get the number of the event
+      gime->Event(index) ;
+      // get the number of cells reached during this event and fill the total multiplicity histogram
+      Int_t n = gime->Hits()->GetEntries() ;
+      nhits += n ;
+      his->Fill(n) ;
+      // Get the data per block
+      TClonesArray * hita = static_cast<TClonesArray *>(gime -> Hits()) ;
+      TIter next(hita) ;
+      Float_t Et = 0. ;
+      Int_t id = 0, block = 0 ;
+      Int_t nhit[6], rid[4] ;
+      Float_t etblock[6] ;
+      Int_t i = 0 ;
       
-      file->Write() ;
-      hisba.Delete() ;
-      hisbanrg.Delete() ; 
-      file->Close();
-        gSystem->Exec("uuencode $ALICE_ROOT/PHOS/testPHOS.root testPHOS.root | mail -s 'PHOS INSTALLATION ERROR  ' almajor@caramail.com"); 
-   
+      for ( i = 0; i < 6 ; i++) {
+       nhit[i] = 0 ;
+       etblock[i] = 0 ;
+      }
+      
+      while ( (hit = static_cast<AliPHOSHit *>(next())) ) {
+       id = hit->GetId() ;
+       if  (geom->IsInEMC(id) ) {
+         Et += ( hit -> GetEnergy()) ;
+         geom->AbsToRelNumbering(id,rid) ;
+         block = rid[0] ;
+         nhit[block]++ ;
+         etblock[block] +=  ( hit -> GetEnergy()) ;
+       }
+      }
+      
+      //Fill all the histograms but total multiplicity, already done
+      hist = static_cast<TH1F*>(hisba.At(block)) ;
+      hist->Fill(nhit[block]) ;
+      histnrg = static_cast<TH1F*>(hisbanrg.At(block)) ;
+      histnrg->Fill(etblock[block]) ;
+      hisnrg -> Fill(Et) ;
+      hbiz->Fill(n,Et) ;
     }
-  cerr<<" _____________________________________________________________ "<<endl;
-  cerr<< " " <<endl;
-  cerr << "             MESS ==> Examination ended successfully. " << endl ;
-  cerr<<" _____________________________________________________________ "<<endl;   
-
+         
+    TFile * file = gROOT -> GetFile("testPHOS.root") ;
+    file -> Write() ;
+    file->Close() ;
+    return kFALSE ;
+  }
+}
 
 
+//____________________________________________________________________________ 
+Bool_t sdigit()
+{
+  //SDigits process
+  
   const Float_t maxSDigits = 62.89 ;
   const Float_t widSDigits = TMath::Sqrt(maxSDigits) ;
+
+  TString mess("") ;
+  TString reconame = "test suite" ;
+  
+  AliPHOSSDigitizer *sd = new AliPHOSSDigitizer("testPHOS.root",reconame.Data()) ;
+  AliPHOSGetter * gime = AliPHOSGetter::GetInstance() ;
+  
+  sd->ExecuteTask("deb") ;
+  
+  Float_t nSDigits =  static_cast<Float_t>(gime->SDigitizer()->GetSDigitsInRun()) / static_cast<Float_t>(gime->MaxEvent()) ;
+  if ( nSDigits < maxSDigits-widSDigits ||
+       nSDigits > maxSDigits+widSDigits ) {
+    mess = "Error detected in the SDigits process. Sending error file to PHOS director." ;
+    write_info(mess) ;
+    return kFALSE ;
+  }
+  else
+    return kTRUE ;
+}
+
+
+//____________________________________________________________________________ 
+Bool_t digit()
+{
+  
+  //Digits process
+  AliPHOSGetter * gime = AliPHOSGetter::GetInstance("testPHOS.root") ;
+  TString reconame = "test suite" ;
   const Float_t maxDigits = 3489.41 ;
   const Float_t widDigits = TMath::Sqrt(maxDigits) ;
-  const Float_t maxRecPoints = 222.83 ;
-  const Float_t widRecPoints = TMath::Sqrt(maxRecPoints) ;
-  const Float_t maxTrackSegments = 1 ;
-  const Float_t maxRecParticles = 1 ;
-  TString reconame = "test suite" ;
-  if (boolerror == 1){
-  cerr<<" ___________________________________________________________________ "<<endl;
-  cerr<<" "<<endl;
-  cerr<<"             MESS ==> Please find the error and try the whole simulation again. "<<endl;
-  cerr<<" ___________________________________________________________________ "<<endl;
+  
+  TString mess("") ;
+
+  AliPHOSDigitizer *d = new AliPHOSDigitizer("testPHOS.root",reconame.Data()) ;
+  
+  d->ExecuteTask("deb") ;
+  
+  Float_t nDigits = static_cast<Float_t>(gime->Digitizer()->GetDigitsInRun()) / static_cast<Float_t>(gime->MaxEvent()) ;
+  
+  if ( nDigits < maxDigits-widDigits || nDigits > maxDigits+widDigits ) {
+    mess = "Error detected in the Digits process. Sending error file to PHOS director." ;
+    write_info(mess) ;
+    return kFALSE ;
   }
+  else
+    return kTRUE ;
+}
 
-  else {
 
-  cerr<<" ___________________________________________________________________ "<<endl;
-  cerr<<" "<<endl;
-  cerr<<"             MESS ==> Beginning of the PHOS reconstruction. "<<endl;
-  cerr<<" ___________________________________________________________________ "<<endl;
+//____________________________________________________________________________ 
+Bool_t recpoint()
+{
+  
+  //RecPoints process
+  AliPHOSGetter * gime = AliPHOSGetter::GetInstance("testPHOS.root") ;
+  TString reconame = "test suite" ;
+  
+  const Float_t maxRecPoints = 222.83 ;
+  const Float_t widRecPoints = TMath::Sqrt(maxRecPoints) ;
+  
+  TString mess("") ;
 
-  //SDigits process
-   AliPHOSSDigitizer *sd = new AliPHOSSDigitizer("testPHOS.root",reconame.Data());
-   AliPHOSGetter * gime = AliPHOSGetter::GetInstance() ;
-   sd->ExecuteTask("deb"); 
-   Float_t nSDigits =  (Float_t) (gime->SDigitizer()->GetSDigitsInRun()) / gime->MaxEvent(); 
-   if ( nSDigits < maxSDigits-widSDigits || nSDigits > maxSDigits+widSDigits ) {
-    boolerror = 1 ;  
-    cerr<<"__________________________________________________________________"<<endl;
-    cerr<<" "<<endl;
-    cerr<<"             MESS ==> Error detected in the SDigits process. Sending error file to PHOS director."<<endl;
-    cerr<<"__________________________________________________________________"<<endl;
-    gSystem->Exec("uuencode $ALICE_ROOT/PHOS/testPHOS.root testPHOS.root | mail -s 'PHOS INSTALLATION ERROR' almajor@caramail.com");
-    }
+  AliPHOSClusterizer * cluster = new  AliPHOSClusterizerv1("testPHOS.root", reconame.Data()) ;
+  
+  cluster->ExecuteTask("deb") ;
+  
+  Float_t nRecPoints =  static_cast<Float_t>(gime->Clusterizer(reconame.Data())->GetRecPointsInRun()) /
+    static_cast<Float_t>(gime->MaxEvent()) ;
+  
+  if ( nRecPoints < maxRecPoints-widRecPoints
+       || nRecPoints > maxRecPoints+widRecPoints ) {
+    mess = "Error detected in the Clusterizing process. Sending error file to PHOS director." ;
+    write_info(mess) ;
+    return kFALSE ;
+  }
+  else
+    return kTRUE ;
+}
 
-  cerr<<"__________________________________________________________________"<<endl;
-  cerr<<" "<<endl;
-  cerr<<"             MESS ==> SDigits process ended successfully."<<endl;
-  cerr<<"__________________________________________________________________"<<endl;
 
-  //Digits process
-     if (boolerror == 0){
-        AliPHOSDigitizer *d = new AliPHOSDigitizer("testPHOS.root",reconame.Data());
-        d->ExecuteTask("deb"); 
-         Float_t nDigits = (Float_t)(gime->Digitizer()->GetDigitsInRun()) / gime->MaxEvent();
-  
-              if ( nDigits < maxDigits-widDigits || nDigits > maxDigits+widDigits ) {
-                  boolerror =1 ;
-                  cerr<<"__________________________________________________________________"<<endl;
-                  cerr<<" "<<endl;
-                  cerr<<"             MESS ==> Error detected in the Digits process. Sending error file to PHOS director."<<endl;
-                  cerr<<"__________________________________________________________________"<<endl;
-   
-    gSystem->Exec("uuencode $ALICE_ROOT/PHOS/testPHOS.root testPHOS.root | mail -s 'PHOS INSTALLATION ERROR' almajor@caramail.com");
-             }
+//____________________________________________________________________________ 
+Bool_t track()
+{
+  
+  //TrackSegments process
+  AliPHOSGetter * gime = AliPHOSGetter::GetInstance("testPHOS.root") ;
+  const Float_t maxTrackSegments = 1 ;
+
+  TString mess("") ;
+  TString reconame = "test suite" ;
+  
+  AliPHOSTrackSegmentMaker * tracks = new AliPHOSTrackSegmentMakerv1("testPHOS.root",reconame.Data()) ;
+  
+  tracks->ExecuteTask("deb") ;
   
-    cerr<<"__________________________________________________________________"<<endl;
-    cerr<<" "<<endl;
-    cerr<<"             MESS ==> Digits process ended successfully."<<endl;
-    cerr<<"__________________________________________________________________"<<endl;
+  Float_t nTrackSegments =  static_cast<Float_t> (gime->TrackSegmentMaker(reconame.Data())->GetTrackSegmentsInRun()) /
+    static_cast<Float_t>(gime->MaxEvent()) ;
+  
+  if ( nTrackSegments < maxTrackSegments-0.25 ||
+       nTrackSegments > maxTrackSegments+0.25 ) {
+    mess = "Error detected in the TrackSegments process. Sending error file to PHOS director." ;
+    write_info(mess) ;
+    return kFALSE ;
   }
+  else
+    return kTRUE ;
+}
+
+
+//____________________________________________________________________________ 
+Bool_t particle()
+{
   
-//RecPoints process
- if (boolerror == 0){
- AliPHOSClusterizer * cluster = new  AliPHOSClusterizerv1("testPHOS.root", reconame.Data());
-  cluster->ExecuteTask("deb");
-  Float_t nRecPoints =  (Float_t) (gime->Clusterizer(reconame.Data())->GetRecPointsInRun()) / gime->MaxEvent();
-   if ( nRecPoints < maxRecPoints-widRecPoints || nRecPoints > maxRecPoints+widRecPoints ) {
-    boolerror = 1;
-    cerr<<"__________________________________________________________________"<<endl;
-    cerr<<" "<<endl;
-    cerr<<"             MESS ==> Error detected in the Clusterizing process. Sending error file to PHOS director."<<endl;
-    cerr<<"__________________________________________________________________"<<endl;
-  
-      gSystem->Exec("uuencode $ALICE_ROOT/PHOS/testPHOS.root testPHOS.root | mail -s 'PHOS INSTALLATION ERROR' almajor@caramail.com");
-    }
-   
-  cerr<<"__________________________________________________________________"<<endl;
-  cerr<<" "<<endl;
-  cerr<<"             MESS ==> Cluster process ended successfully."<<endl;
-  cerr<<"__________________________________________________________________"<<endl;
- }
+  //RecParticles process
+  AliPHOSGetter * gime = AliPHOSGetter::GetInstance("testPHOS.root") ;
+  const Float_t maxRecParticles = 1 ;
 
-//TrackSegments process
- if(boolerror == 0){ 
-  AliPHOSTrackSegmentMaker * tracks = new AliPHOSTrackSegmentMakerv1("testPHOS.root",reconame.Data());
-  tracks->ExecuteTask("deb");
-  Float_t nTrackSegments =  (Float_t) (gime->TrackSegmentMaker(reconame.Data())->GetTrackSegmentsInRun()) / gime->MaxEvent();
-   if ( nTrackSegments < maxTrackSegments-0.25 || nTrackSegments > maxTrackSegments+0.25 ) {
-    boolerror = 1;
-    cerr<<"__________________________________________________________________"<<endl;
-    cerr<<" "<<endl;
-    cerr<<"             MESS ==> Error detected in the TrackSegments process. Sending error file to PHOS director."<<endl;
-    cerr<<"__________________________________________________________________"<<endl;
-    
-      gSystem->Exec("uuencode $ALICE_ROOT/PHOS/testPHOS.root testPHOS.root | mail -s 'PHOS INSTALLATION ERROR' almajor@caramail.com");
-    }
-   
-  cerr<<"__________________________________________________________________"<<endl;
-  cerr<<" "<<endl;
-  cerr<<"             MESS ==> TrackSegments process ended successfully."<<endl;
-  cerr<<"__________________________________________________________________"<<endl;
- }
-//RecParticles process
- if(boolerror == 0){
-  AliPHOSPID * pid = new AliPHOSPIDv1("testPHOS.root",reconame.Data()); pid->ExecuteTask("deb");
-  Float_t nRecParticles =  (Float_t) (gime->PID(reconame.Data())->GetRecParticlesInRun())/gime->MaxEvent();
-   if ( nRecParticles < maxRecParticles-0.25 || nRecParticles > maxRecParticles+0.25 ) {
-    boolerror = 1;
-    cerr<<"__________________________________________________________________"<<endl;
-    cerr<<" "<<endl;
-    cerr<<"             MESS ==> Error detected in the RecParticles process. Sending error file to PHOS director.Stop reconstruction."<<endl;
-    cerr<<"__________________________________________________________________"<<endl;
-    
-    gSystem->Exec("uuencode $ALICE_ROOT/PHOS/testPHOS.root testPHOS.root | mail -s 'PHOS INSTALLATION ERROR' almajor@caramail.com");
-    }
-  cerr<<"__________________________________________________________________"<<endl;
-  cerr<<" "<<endl;
-  cerr<<"             MESS ==> RecParticles process ended successfully."<<endl;
-  cerr<<"__________________________________________________________________"<<endl;
- }
- if(boolerror == 0){
-  cerr<<"_____________________________________________________________________"<<endl;
-  cerr<<" "<<endl;
-  cerr<<"             MESS ==> reconstruction ended successfully."<<endl;
-  cerr<<"_____________________________________________________________________"<<endl;
- }
- else {
- cerr<<"_____________________________________________________________________"<<endl;
-  cerr<<" "<<endl;
-  cerr<<"             MESS ==> Due to an error, reconstruction has not been completed.Please try again when the error has been found."<<endl;
-  cerr<<"_____________________________________________________________________"<<endl;
+  TString mess("") ;
+  TString reconame = "test suite" ;
+  
+  AliPHOSPID * pid = new AliPHOSPIDv1("testPHOS.root",reconame.Data()) ;
+  
+  pid->ExecuteTask("deb") ;
+  
+  Float_t nRecParticles =  static_cast<Float_t> (gime->PID(reconame.Data())->GetRecParticlesInRun()) /
+    static_cast<Float_t>(gime->MaxEvent()) ;
+  
+  
+  if ( nRecParticles < maxRecParticles-0.25 ||
+       nRecParticles > maxRecParticles+0.25 ) {
+    mess = "Error detected in the RecParticles process. Sending error file to PHOS director.Stop reconstruction." ;
+    write_info(mess) ;
+    return kFALSE ;
   }
- }
+  else
+    return kTRUE ;
 }
+
+
+//____________________________________________________________________________ 
+void write_info(TString mess)
+{
+  cerr << " _____________________________________________________________ " << endl
+       << " " << endl
+       << "MESS ==> " << mess <<endl
+       << " _____________________________________________________________ " <<endl ;
+}
+