RWA98Headers.h, RWA98LinkDef.h, history.txt and the sub-directory /scripts
introduced as a sub-directory /wa98 in the Ralice repository at CERN.
--- /dev/null
+///////////////////////////////////////////////////////////////////////////
+// All headers of the WA98 analysis software
+// This header list is used to create the RWA98 dictionary via rootcint.
+//
+// Note : Class names have also to be entered into the list
+// contained in RWA98LinkDef.h
+//
+//--- NvE 24-jan-1999 UU-SAP Utrecht
+///////////////////////////////////////////////////////////////////////////
+
+#include "Wa98Event.h"
+#include "Wa98Convert.h"
+
--- /dev/null
+///////////////////////////////////////////////////////////////////////////
+// All classes of WA98 analysis software
+// This class list is used to create the RWA98 dictionary via rootcint.
+//
+// Note : Headers have also to be entered into the list
+// contained in RWA98Headers.h
+//
+//--- NvE 24-jan-1999 UU-SAP Utrecht
+///////////////////////////////////////////////////////////////////////////
+
+#ifdef __CINT__
+ #pragma link off all globals;
+ #pragma link off all classes;
+ #pragma link off all functions;
+
+ #pragma link C++ class Wa98Event+;
+ #pragma link C++ class Wa98Convert+;
+#endif
+
--- /dev/null
+// $Id$
+
+///////////////////////////////////////////////////////////////////////////
+// Class Wa98Convert
+// Conversion of Wa98 Hbook ntuple data into Wa98Event physics event structures.
+//
+// Usage example :
+// ---------------
+//
+// gSystem->Load("libHbook");
+// gSystem->Load("ralice");
+// gSystem->Load("rwa98");
+//
+// // Input file with ANALYZ produced Hbook ntuple data
+// THbookFile* f=new THbookFile("pb611258.cwn");
+// TTree* h999=(TTree*)f->Get(999);
+//
+// // Output file for the event structures
+// TFile* ofile=new TFile("run11258.root","RECREATE","WA98 data in RALICE event structure");
+// TTree* otree=new TTree("T","Data of the 1996 Pb+Pb run");
+//
+// Int_t nentries=h999->GetEntries();
+// cout << " Number of entries available : " << nentries << endl;
+// cout << endl;
+//
+// // Limit the number of entries for testing
+// nentries=300;
+//
+// // Print frequency to produce a short summary print every printfreq events
+// Int_t printfreq=10;
+//
+// Convert q(h999);
+// q.Loop(otree,nentries,printfreq);
+//
+// otree->Print();
+//
+// // Close output file
+// ofile->Write();
+// ofile->Close();
+//
+//--- Author: Nick van Eijndhoven 06-jul-2004 Utrecht University
+//- Modified: NvE $Date$ Utrecht University
+///////////////////////////////////////////////////////////////////////////
+
+#include "Wa98Convert.h"
+#include "Riostream.h"
+
+ClassImp(Wa98Convert) // Class implementation to enable ROOT I/O
+
+Wa98Convert::Wa98Convert(TTree* tree)
+{
+// Default constructor.
+// Initialise the input tree (or chain) to be converted.
+// By default tree=0;
+
+ fChain=tree;
+ if (!fChain) return;
+
+ // Link the variables to the branches of the input tree/chain
+ fChain->SetBranchAddress("Jrun",&Jrun);
+ fChain->SetBranchAddress("Jevt",&Jevt);
+ fChain->SetBranchAddress("Jdate",&Jdate);
+ fChain->SetBranchAddress("Jtime",&Jtime);
+ fChain->SetBranchAddress("Jevid",&Jevid);
+ fChain->SetBranchAddress("Jwscal",&Jwscal);
+ fChain->SetBranchAddress("Itword",&Itword);
+ fChain->SetBranchAddress("Zdc",&Zdc);
+ fChain->SetBranchAddress("Emir",&Emir);
+ fChain->SetBranchAddress("Emire",&Emire);
+ fChain->SetBranchAddress("Emirh",&Emirh);
+ fChain->SetBranchAddress("Etm",&Etm);
+ fChain->SetBranchAddress("Etme",&Etme);
+ fChain->SetBranchAddress("Etmh",&Etmh);
+ fChain->SetBranchAddress("Nmod",&Nmod);
+ fChain->SetBranchAddress("Irowl",Irowl);
+ fChain->SetBranchAddress("Icoll",Icoll);
+ fChain->SetBranchAddress("Adcl",Adcl);
+ fChain->SetBranchAddress("Nclu",&Nclu);
+ fChain->SetBranchAddress("Irowc",Irowc);
+ fChain->SetBranchAddress("Icolc",Icolc);
+ fChain->SetBranchAddress("Adcc",Adcc);
+ fChain->SetBranchAddress("Ncluv",&Ncluv);
+ fChain->SetBranchAddress("Iadccv",Iadccv);
+ fChain->SetBranchAddress("Thetacv",Thetacv);
+ fChain->SetBranchAddress("Phicv",Phicv);
+}
+///////////////////////////////////////////////////////////////////////////
+Wa98Convert::~Wa98Convert()
+{
+// Default destructor.
+}
+///////////////////////////////////////////////////////////////////////////
+void Wa98Convert::Loop(TTree* otree,Int_t nentries,Int_t printfreq)
+{
+// Loop over the specified number of entries and convert the
+// ntuple data into the Wa98Event structure.
+// The output will be written on the output tree specified as "otree".
+// If otree=0, a default standard output tree will be created.
+// If nentries<0 (default) all the entries of the input chain
+// will be processed.
+// Every "printfreq" events a short event summary will be printed.
+// The default value is printfreq=1.
+
+ if (fChain==0) return;
+
+ if (nentries<0) nentries=fChain->GetEntriesFast();
+
+ if (!otree) otree=new TTree("T","Data of the 1996 Pb+Pb run");
+
+ Double_t pi=acos(-1.);
+
+ Double_t me=0.51099890221e-3;
+ Double_t mpi=0.13956995;
+ Double_t mkc=0.493677;
+ Double_t mk0=0.497672;
+ Double_t mp=0.93827231;
+ Double_t mlam=1.115683;
+
+ Wa98Event* evt=new Wa98Event();
+
+ // Branch in the tree for the event structure
+ Int_t split=1;
+ Int_t bsize=32000;
+ otree->Branch("Wa98Event","Wa98Event",&evt,bsize,split);
+
+ // The LEDA specific output data
+ AliCalorimeter* ledaup=new AliCalorimeter(44,144);
+ AliCalorimeter* ledalw=new AliCalorimeter(40,144);
+
+ ledaup->SetName("LedaUp");
+ ledalw->SetName("LedaDown");
+
+ evt->InitLeda(ledaup);
+ evt->InitLeda(ledalw);
+
+ TDatime datim;
+ Float_t pos[3],costh;
+ AliSignal s;
+ s.SetName("CPV signal ADC");
+
+ for (Int_t jentry=0; jentry<nentries; jentry++)
+ {
+ fChain->GetEntry(jentry);
+
+ // Reset the complete Event structure
+ evt->Reset();
+
+ evt->SetRunNumber(Jrun);
+ evt->SetEventNumber(Jevt);
+ datim.Set(Jdate,Jtime);
+ evt->SetDayTime(datim);
+ evt->SetProjectile(207,82,158);
+ evt->SetTarget(207,82,0);
+ evt->SetWeight(Jwscal);
+ evt->SetTrig(Itword);
+ evt->SetZdc(Zdc*1000.);
+ evt->SetMiracE(1000.*Emir,Emire,Emirh);
+ evt->SetMiracEt(Etm,Etme,Etmh);
+
+ ledaup->Reset();
+ ledalw->Reset();
+ // Fill calorimeter with module data
+ for (Int_t i=0; i<Nmod; i++)
+ {
+ if (Adcl[i] > 3) // Adc cut of 3 to remove noise
+ {
+ if (Irowl[i] > 0) ledaup->SetSignal(Irowl[i],Icoll[i],Adcl[i]);
+ if (Irowl[i] < 0) ledalw->SetSignal(-Irowl[i],Icoll[i],Adcl[i]);
+ }
+ }
+
+ // Store associated CPV signals
+ for (Int_t j=0; j<Ncluv; j++)
+ {
+ s.Reset();
+ s.SetSignal(Iadccv[j]);
+ pos[1]=Thetacv[j]*pi/180.;
+ pos[2]=Phicv[j]*pi/180.;
+ costh=cos(pos[1]);
+ pos[0]=0;
+ if (costh) pos[0]=2103./costh;
+ s.SetPosition(pos,"sph");
+ pos[0]=0.4;
+ pos[1]=2.2;
+ pos[2]=0;
+ s.SetPositionErrors(pos,"car");
+ if (Phicv[j]>=0. && Phicv[j]<=180.)
+ {
+ ledaup->AddVetoSignal(s);
+ }
+ else
+ {
+ ledalw->AddVetoSignal(s);
+ }
+ }
+
+ evt->AddDevice(ledaup);
+ evt->AddDevice(ledalw);
+
+ if (!(jentry%printfreq))
+ {
+// cout << " Entry : " << jentry << " Run : " << Jrun << " Event : " << Jevt
+// << " Itword : " << Itword << " Etm : " << Etm << endl;
+// cout << " Jdate : " << Jdate << " Jtime : " << Jtime << endl;
+ cout << " Itword : " << Itword << " Nmod : " << Nmod << " Ncluv : " << Ncluv << endl;
+ evt->HeaderData();
+ }
+
+ // Write the complete structure to the output Tree
+ otree->Fill();
+ }
+
+ if (evt) delete evt;
+ if (ledaup) delete ledaup;
+ if (ledalw) delete ledalw;
+}
+///////////////////////////////////////////////////////////////////////////
--- /dev/null
+#ifndef Wa98Convert_h
+#define Wa98Convert_h
+
+// $Id$
+
+#include "TObject.h"
+#include "TChain.h"
+#include "TFile.h"
+#include "THbookFile.h"
+
+#include "Wa98Event.h"
+
+class Wa98Convert : public TObject
+{
+ public :
+ Wa98Convert(TTree* tree=0); // Constructor
+ virtual ~Wa98Convert(); // Destructor
+ void Loop(TTree* otree=0,Int_t nentries=-1,Int_t printfreq=1); // Perform the conversion
+
+ protected :
+ TTree *fChain; //!pointer to the analyzed TTree or TChain
+
+ //Declaration of leaves types
+ Int_t Jrun;
+ Int_t Jevt;
+ Int_t Jdate;
+ Int_t Jtime;
+ Int_t Jevid;
+ UInt_t Jwscal;
+ UInt_t Itword;
+ Float_t Zdc;
+ Float_t Emir;
+ Float_t Emire;
+ Float_t Emirh;
+ Float_t Etm;
+ Float_t Etme;
+ Float_t Etmh;
+ Int_t Nmod;
+ Int_t Irowl[3000]; //[Nmod]
+ UInt_t Icoll[3000]; //[Nmod]
+ Float_t Adcl[3000]; //[Nmod]
+ Int_t Nclu;
+ Int_t Irowc[400]; //[Nclu]
+ UInt_t Icolc[400]; //[Nclu]
+ Float_t Adcc[400]; //[Nclu]
+ Int_t Ncluv;
+ Int_t Iadccv[1000]; //[Ncluv]
+ Float_t Thetacv[1000]; //[Ncluv]
+ Float_t Phicv[1000]; //[Ncluv]
+
+ ClassDef(Wa98Convert,1) // Conversion Wa98 ntuple data into Wa98Event physics event structures.
+};
+#endif
--- /dev/null
+// $Id$
+
+///////////////////////////////////////////////////////////////////////////
+// Class Wa98Event
+// Creation and investigation of a Wa98 physics event.
+// This event class is derived from AliEvent and has some Wa98 specific
+// extensions like e.g. the information from the trigger calorimeters
+// and some LEDA specific functions.
+//
+//--- Author: Nick van Eijndhoven 24-apr-2002 UU-SAP Utrecht
+//- Modified: NvE $Date$ UU-SAP Utrecht
+///////////////////////////////////////////////////////////////////////////
+
+#include "Wa98Event.h"
+#include "Riostream.h"
+
+ClassImp(Wa98Event) // Class implementation to enable ROOT I/O
+
+Wa98Event::Wa98Event() : AliEvent()
+{
+// Default constructor.
+// All variables initialised to default values.
+ Reset();
+}
+///////////////////////////////////////////////////////////////////////////
+Wa98Event::Wa98Event(Int_t n) : AliEvent(n)
+{
+// Create an event to hold initially a maximum of n tracks
+// All variables initialised to default values
+ Reset();
+}
+///////////////////////////////////////////////////////////////////////////
+Wa98Event::~Wa98Event()
+{
+// Default destructor
+}
+///////////////////////////////////////////////////////////////////////////
+Wa98Event::Wa98Event(Wa98Event& evt) : AliEvent(evt)
+{
+// Copy constructor.
+ fTrig=evt.fTrig;
+ fWeight=evt.fWeight;
+ fZdc=evt.fZdc;
+ fEmir=evt.fEmir;
+ fEmire=evt.fEmire;
+ fEmirh=evt.fEmirh;
+ fEtm=evt.fEtm;
+ fEtme=evt.fEtme;
+ fEtmh=evt.fEtmh;
+}
+///////////////////////////////////////////////////////////////////////////
+void Wa98Event::Reset()
+{
+// Reset all variables to default values
+// The max. number of tracks is set to the initial value again
+// The max. number of vertices is set to the default value again
+ fTrig=0;
+ fWeight=0;
+ fZdc=0;
+ fEmir=0;
+ fEmire=0;
+ fEmirh=0;
+ fEtm=0;
+ fEtme=0;
+ fEtmh=0;
+
+ AliEvent::Reset();
+}
+///////////////////////////////////////////////////////////////////////////
+void Wa98Event::SetTrig(Int_t trig)
+{
+// Set the trigger class.
+// Trigger classes : 1=nsc 3=cen 5=per 6=mbias 7=beam 8=inbeam ped
+ fTrig=trig;
+}
+///////////////////////////////////////////////////////////////////////////
+Int_t Wa98Event::GetTrig()
+{
+// Provide the trigger class.
+// Trigger classes : 1=nsc 3=cen 5=per 6=mbias 7=beam 8=inbeam ped
+ return fTrig;
+}
+///////////////////////////////////////////////////////////////////////////
+void Wa98Event::SetWeight(Int_t w)
+{
+// Set the event weight to account for the downscale factor.
+ fWeight=w;
+}
+///////////////////////////////////////////////////////////////////////////
+Int_t Wa98Event::GetWeight()
+{
+// Provide the event weight factor to account for the DAQ downscaling.
+ return fWeight;
+}
+///////////////////////////////////////////////////////////////////////////
+void Wa98Event::SetZdc(Float_t zdc)
+{
+// Set the ZDC signal in GeV.
+ fZdc=zdc;
+}
+///////////////////////////////////////////////////////////////////////////
+Float_t Wa98Event::GetZdc()
+{
+// Provide the ZDC signal in GeV.
+ return fZdc;
+}
+///////////////////////////////////////////////////////////////////////////
+void Wa98Event::SetMiracE(Float_t tot,Float_t em,Float_t had)
+{
+// Set the total, EM and hadronic signals for MIRAC in GeV.
+ fEmir=tot;
+ fEmire=em;
+ fEmirh=had;
+}
+///////////////////////////////////////////////////////////////////////////
+Float_t Wa98Event::GetEmir()
+{
+// Provide the total MIRAC signal in GeV.
+ return fEmir;
+}
+///////////////////////////////////////////////////////////////////////////
+Float_t Wa98Event::GetEmire()
+{
+// Provide the MIRAC EM signal in GeV.
+ return fEmire;
+}
+///////////////////////////////////////////////////////////////////////////
+Float_t Wa98Event::GetEmirh()
+{
+// Provide the MIRAC hadronic signal in GeV.
+ return fEmirh;
+}
+///////////////////////////////////////////////////////////////////////////
+void Wa98Event::SetMiracEt(Float_t tot,Float_t em,Float_t had)
+{
+// Set the total, EM and hadronic Et signals for MIRAC in GeV.
+ fEtm=tot;
+ fEtme=em;
+ fEtmh=had;
+}
+///////////////////////////////////////////////////////////////////////////
+Float_t Wa98Event::GetEtm()
+{
+// Provide the total MIRAC Et signal in GeV.
+ return fEtm;
+}
+///////////////////////////////////////////////////////////////////////////
+Float_t Wa98Event::GetEtme()
+{
+// Provide the MIRAC EM Et signal in GeV.
+ return fEtme;
+}
+///////////////////////////////////////////////////////////////////////////
+Float_t Wa98Event::GetEtmh()
+{
+// Provide the MIRAC hadronic Et signal in GeV.
+ return fEtmh;
+}
+///////////////////////////////////////////////////////////////////////////
+void Wa98Event::InitLeda(AliCalorimeter* cal)
+{
+// Set module positions and flag bad modules for this LEDA part.
+ if (cal)
+ {
+ Int_t nrows=cal->GetNrows();
+ if (nrows==40)
+ {
+ SetPositionsLedalw(cal);
+ SetBadModulesLedalw(cal);
+ }
+ if (nrows==44)
+ {
+ SetPositionsLedaup(cal);
+ SetBadModulesLedaup(cal);
+ }
+ if (nrows!=40 && nrows!=44)
+ {
+ cout << " *Wa98Event::InitLeda* Not a LEDA configuration. nrows = " << nrows << endl;
+ }
+ }
+ else
+ {
+ cout << " *Wa98Event::InitLeda* Calorimeter pointer was zero. " << endl;
+ }
+}
+///////////////////////////////////////////////////////////////////////////
+void Wa98Event::SetBadModulesLedaup(AliCalorimeter* cal)
+{
+// Marking of the bad modules the upper LEDA
+
+ Int_t nr=cal->GetNrows();
+ Int_t nc=cal->GetNcolumns();
+
+// Declare the non-existing modules as dead
+ Int_t row0=0;
+ for (Int_t col=1; col<=nc; col++)
+ {
+ if (col<19 || col>126) row0=41;
+ if (col>36 && col<109) row0=41;
+ if (col<13 || col>132) row0=37;
+ if (col>42 && col<103) row0=37;
+ if (col< 7 || col>138) row0=33;
+ if (col>48 && col< 97) row0=33;
+
+ for (Int_t row=row0; row<=nr; row++)
+ {
+ cal->SetDead(row,col);
+ }
+ }
+
+ // The bad area as seen in the first 50 events of Pb96 run 9066
+ for (Int_t i=24; i<=33; i++)
+ {
+ for (Int_t j=1; j<=20; j++)
+ {
+ cal->SetDead(i,j);
+ }
+ }
+}
+//////////////////////////////////////////////////////////////////////////
+void Wa98Event::SetBadModulesLedalw(AliCalorimeter* cal)
+{
+// Marking of the bad modules the lower LEDA
+
+ Int_t nr=cal->GetNrows();
+ Int_t nc=cal->GetNcolumns();
+
+// Declare the non-existing modules as dead
+ Int_t row0=0;
+ for (Int_t col=1; col<=nc; col++)
+ {
+ if (col<19 || col>126) row0=37;
+ if (col>36 && col<109) row0=37;
+ if (col<13 || col>132) row0=33;
+ if (col>42 && col<103) row0=33;
+ if (col< 7 || col>138) row0=29;
+ if (col>48 && col< 97) row0=29;
+
+ for (Int_t row=row0; row<=nr; row++)
+ {
+ cal->SetDead(row,col);
+ }
+ }
+}
+//////////////////////////////////////////////////////////////////////////
+void Wa98Event::SetPositionsLedaup(AliCalorimeter* cal)
+{
+// Determination of the lab. position of each module of the upper LEDA
+
+ Float_t sx=4.105; // X-dimension of a module in cm
+ Float_t sy=4.085; // Y-dimension of a module in cm
+ Float_t tilt=8.31; // Tilt angle in degrees
+
+ Float_t pi=acos(-1.);
+ Float_t tiltr=tilt*pi/180.; // Tilt angle in radians
+
+ Float_t dx=sx; // X-displacement skipping 1 module horizontal
+ Float_t dy=sy*cos(tiltr); // Y-displacement skipping 1 module vertical
+ Float_t dz=sy*sin(tiltr); // Z-displacement skipping 1 module vertical
+
+ // Position of the left upper module (1,1) looking downstream
+ Float_t x0=293.;
+ Float_t y0=345.73;
+ Float_t z0=2180.12;
+
+ // Determine and store position of each module
+ Int_t nr=cal->GetNrows();
+ Int_t nc=cal->GetNcolumns();
+ Float_t pos[3];
+ for (Int_t i=1; i<=nr; i++)
+ {
+ for (Int_t j=1; j<=nc; j++)
+ {
+ pos[0]=x0-float(j-1)*dx;
+ pos[1]=y0-float(i-1)*dy;
+ pos[2]=z0+float(i-1)*dz;
+ cal->SetPosition(i,j,pos,"car");
+ }
+ }
+}
+//////////////////////////////////////////////////////////////////////////
+void Wa98Event::SetPositionsLedalw(AliCalorimeter* cal)
+{
+// Determination of the lab. position of each module of the lower LEDA
+
+ Float_t sx=4.105; // X-dimension of a module in cm
+ Float_t sy=4.085; // Y-dimension of a module in cm
+ Float_t tilt=8.31; // Tilt angle in degrees
+
+ Float_t pi=acos(-1.);
+ Float_t tiltr=tilt*pi/180.; // Tilt angle in radians
+
+ Float_t dx=sx; // X-displacement skipping 1 module horizontal
+ Float_t dy=sy*cos(tiltr); // Y-displacement skipping 1 module vertical
+ Float_t dz=sy*sin(tiltr); // Z-displacement skipping 1 module vertical
+
+ // Position of the left lower module (1,1) looking downstream
+ Float_t x0=291.91;
+ Float_t y0=-331.14;
+ Float_t z0=2183.14;
+
+ // Determine and store position of each module
+ Int_t nr=cal->GetNrows();
+ Int_t nc=cal->GetNcolumns();
+ Float_t pos[3];
+ for (Int_t i=1; i<=nr; i++)
+ {
+ for (Int_t j=1; j<=nc; j++)
+ {
+ pos[0]=x0-float(j-1)*dx;
+ pos[1]=y0+float(i-1)*dy;
+ pos[2]=z0+float(i-1)*dz;
+ cal->SetPosition(i,j,pos,"car");
+ }
+ }
+}
+//////////////////////////////////////////////////////////////////////////
+void Wa98Event::ClusterLeda(AliCalorimeter* cal,Int_t n,Int_t mode)
+{
+// Group LEDA modules into clusters.
+// The parameter n indicates the number of rings for the grouping process
+// (default n=2) and the parameter mode indicates the sorting algorithm
+// (default mode=1). See AliCalorimeter::Group() for further details.
+// This function invokes AliCalorimeter::Group(n) and automatically
+// sets the uncertainties on the cluster positions.
+// The precision of a cluster position in the X-Y plane has been seen
+// to be about half the size of a module, so dx=dy=2cm.
+
+ Float_t err[3]={2,2,0};
+ AliCalcluster* c=0;
+
+ if (cal)
+ {
+ cal->Group(n,mode);
+ for (Int_t i=1; i<=cal->GetNclusters(); i++)
+ {
+ c=cal->GetCluster(i);
+ if (c) c->SetPositionErrors(err,"car");
+ }
+ }
+ else
+ {
+ cout << " *Wa98Event::ClusterLeda* Calorimeter pointer was zero. " << endl;
+ }
+}
+//////////////////////////////////////////////////////////////////////////
+void Wa98Event::VetoLeda(AliCalorimeter* cal,Float_t dtheta,Float_t dphi)
+{
+// Perform LEDA-Veto cluster association.
+// An association is only made if the Veto signal appears into a small
+// cone around the LEDA cluster position.
+// The cone dimensions are given by the parameters "dtheta" and "dphi"
+// (in degrees) and the default values are dtheta=0.2 and dphi=1.
+// The automatic straight line extrapolation of the Veto signal position
+// onto the LEDA surface is used in the association procedure.
+
+ Float_t pi=acos(-1.);
+
+ AliCalcluster* c;
+ AliSignal* v;
+ Float_t posc[3],posv[3];
+ Float_t dth,dph;
+
+ Int_t nc=cal->GetNclusters();
+ Int_t nv=cal->GetNvetos();
+ if (nv)
+ {
+ for (Int_t i=1; i<=nc; i++)
+ {
+ c=cal->GetCluster(i);
+ c->GetPosition(posc,"sph");
+
+ for (Int_t j=1; j<=nv; j++)
+ {
+ v=cal->GetVetoSignal(j);
+ v->GetPosition(posv,"sph");
+ // Associate a close-by veto to this LEDA cluster
+ dth=(posc[1]-posv[1])*180./pi;
+ dph=(posc[2]-posv[2])*180./pi;
+ if (fabs(dth)<dtheta && fabs(dph)<dphi) c->AddVetoSignal(v);
+ }
+ }
+ }
+}
+///////////////////////////////////////////////////////////////////////////
--- /dev/null
+#ifndef Wa98Event_h
+#define Wa98Event_h
+
+// $Id$
+
+#include "AliEvent.h"
+#include "AliCalorimeter.h"
+
+class Wa98Event : public AliEvent
+{
+ public:
+ Wa98Event(); // Default constructor
+ Wa98Event(Int_t n); // Create an event to hold initially n tracks
+ virtual ~Wa98Event(); // Default destructor
+ Wa98Event(Wa98Event& evt); // Copy constructor
+ void Reset(); // Reset the complete event
+ void SetTrig(Int_t trig); // Set the trigger class
+ Int_t GetTrig(); // Provide the trigger class
+ void SetWeight(Int_t w); // Set the event weight factor
+ Int_t GetWeight(); // Provide the event weight factor
+ void SetZdc(Float_t zdc); // Set ZDC signal
+ Float_t GetZdc(); // Provide ZDC signal
+ void SetMiracE(Float_t tot,Float_t em,Float_t had); // Set the total, EM and hadr. MIRAC signals
+ Float_t GetEmir(); // Provide the total MIRAC signal
+ Float_t GetEmire(); // Provide the MIRAC EM signal
+ Float_t GetEmirh(); // Provide the MIRAC hadronic signal
+ void SetMiracEt(Float_t tot,Float_t em,Float_t had); // Set the total, EM and hadr. MIRAC Et signals
+ Float_t GetEtm(); // Provide the total MIRAC Et signal
+ Float_t GetEtme(); // Provide the MIRAC EM Et signal
+ Float_t GetEtmh(); // Provide the MIRAC hadronic Et signal
+ void InitLeda(AliCalorimeter* cal); // Set positions and flag bad modules for LEDA part
+ void ClusterLeda(AliCalorimeter* cal,Int_t n=2,Int_t mode=1); // Group (n rings) modules into clusters for LEDA part
+ void VetoLeda(AliCalorimeter* cal,Float_t dtheta=0.2,Float_t dphi=1); // Associate veto hits with LEDA clusters
+
+ protected:
+ Int_t fTrig; // The trigger class 1=nsc 3=cen 5=per 6=mbias 7=beam 8=inbeam ped
+ Int_t fWeight; // The event weight to account for the downscaling factor
+ Float_t fZdc; // The ZDC signal in GeV
+ Float_t fEmir; // The total MIRAC signal in GeV
+ Float_t fEmire; // The MIRAC EM signal in GeV
+ Float_t fEmirh; // The MIRAC hadronic signal in GeV
+ Float_t fEtm; // The total MIRAC Et signal in GeV
+ Float_t fEtme; // The MIRAC EM Et signal in GeV
+ Float_t fEtmh; // The MIRAC hadronic Et signal in GeV
+
+ private:
+ void SetPositionsLedaup(AliCalorimeter* cal); // Set module positions for upper LEDA
+ void SetPositionsLedalw(AliCalorimeter* cal); // Set module positions for lower LEDA
+ void SetBadModulesLedaup(AliCalorimeter* cal); // Flag bad modules for upper LEDA
+ void SetBadModulesLedalw(AliCalorimeter* cal); // Flag bad modules for lower LEDA
+
+ ClassDef(Wa98Event,4) // Creation and investigation of a Wa98 physics event.
+};
+#endif
--- /dev/null
+//////////////////////////////////////////////////////////////////////////////////////
+// History of updates //
+//////////////////////////////////////////////////////////////////////////////////////
+09-mar-1999 NvE First release of the package
+17-mar-1999 NvE Non-existing LEDA modules declared as dead in Wa98Filter
+ to obtain correct treatment of the edges.
+19-mar-1999 NvE Wa98Data updated to match new (reduced) data format.
+ Also Wa98Filter::Leda() modified to take UInt_t values
+ properly into account.
+23-mar-1999 NvE Wa98Filter::Select() updated to accept only physics events with
+ combined LEDA and CPV activity. Also beam triggers are accepted now.
+ Slight format modification in Wa98Filter::Print() and Wa98Filter::Glob()
+ removed. Also Glob() and Print() removed from Wa98Display.
+25-mar-1999 NvE ClusterLeda() of class Wa98Filter split in ClusterLeda() and VetoLeda().
+ Also confidence level histos removed from Wa98Filter; info will be
+ provided via the new Wa98Dst class.
+26-mar-1999 NvE Wa98Dst class introduced and several memberfunctions of Wa98Filter
+ declared virtual in view of base class functionality.
+21-apr-1999 NvE Wa98Dst memberfunctions SetLab() and SetCms() introduced and filling of
+ DST data updated accordingly.
+15-jul-1999 NvE TChain::GetEvent() calls replaced by TChain::GetEntry() in Wa98Filter
+ and Wa98Display to adopt new ROOT convention.
+28-oct-1999 NvE AliBoost::SetGamma() replaced by SetBeta() invokation in
+ Wa98Dst::SetCms since SetGamma() memberfunction has been removed.
+ Wa98Filter::SetCpv() added to enable CPV processing selection.
+22-feb-2001 NvE File RWA98LinkDef.h updated to allow the automatic schema evolution
+ as introduced in ROOT 3.00/05.
+25-jun-2002 NvE Class Wa98Event introduced.
+ This makes all the previously defined classes obsolete.
+18-feb-2003 NvE Date/time format changed and ShowCalorimeters() invoked in Wa98Event::HeaderData().
+06-mar-2003 NvE Copy ctor introduced for Wa98Event.
+25-oct-2003 NvE ShowCalorimeters() replaced by ShowDevices() in Wa98Event::HeaderData().
+26-oct-2003 NvE Memberfunctions HeaderData() and Data() removed from Wa98Event, since the
+ corresponding functions of AliEvent now use the ClassName in the printout.
+06-nov-2003 NvE Include of AliCalorimeter.h added in Wa98Event.h since AliEvent.h doesn't have
+ this include anymore.
+06-jul-2004 NvE New class Wa98Convert introduced and support for sorting mode introduced
+ in Wa98Event::ClusterLeda().
+29-nov-2004 NvE Package containing the classes Wa98Event, Wa98Convert and the usual files
+ RWA98Headers.h, RWA98LinkDef.h, history.txt and the sub-directory /scripts
+ introduced as a sub-directory /wa98 in the Ralice repository at CERN.
+