From 5c9fc9156e31253d61e22fad5f0f9b186b3b92c0 Mon Sep 17 00:00:00 2001 From: nick Date: Mon, 29 Nov 2004 07:45:59 +0000 Subject: [PATCH] 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. --- RALICE/wa98/RWA98Headers.h | 13 ++ RALICE/wa98/RWA98LinkDef.h | 19 ++ RALICE/wa98/Wa98Convert.cxx | 217 ++++++++++++++++++++ RALICE/wa98/Wa98Convert.h | 53 +++++ RALICE/wa98/Wa98Event.cxx | 385 ++++++++++++++++++++++++++++++++++++ RALICE/wa98/Wa98Event.h | 54 +++++ RALICE/wa98/history.txt | 42 ++++ 7 files changed, 783 insertions(+) create mode 100644 RALICE/wa98/RWA98Headers.h create mode 100644 RALICE/wa98/RWA98LinkDef.h create mode 100644 RALICE/wa98/Wa98Convert.cxx create mode 100644 RALICE/wa98/Wa98Convert.h create mode 100644 RALICE/wa98/Wa98Event.cxx create mode 100644 RALICE/wa98/Wa98Event.h create mode 100644 RALICE/wa98/history.txt diff --git a/RALICE/wa98/RWA98Headers.h b/RALICE/wa98/RWA98Headers.h new file mode 100644 index 00000000000..1904723223a --- /dev/null +++ b/RALICE/wa98/RWA98Headers.h @@ -0,0 +1,13 @@ +/////////////////////////////////////////////////////////////////////////// +// 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" + diff --git a/RALICE/wa98/RWA98LinkDef.h b/RALICE/wa98/RWA98LinkDef.h new file mode 100644 index 00000000000..29b988de278 --- /dev/null +++ b/RALICE/wa98/RWA98LinkDef.h @@ -0,0 +1,19 @@ +/////////////////////////////////////////////////////////////////////////// +// 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 + diff --git a/RALICE/wa98/Wa98Convert.cxx b/RALICE/wa98/Wa98Convert.cxx new file mode 100644 index 00000000000..483dc28f6c0 --- /dev/null +++ b/RALICE/wa98/Wa98Convert.cxx @@ -0,0 +1,217 @@ +// $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; jentryGetEntry(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 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=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; +} +/////////////////////////////////////////////////////////////////////////// diff --git a/RALICE/wa98/Wa98Convert.h b/RALICE/wa98/Wa98Convert.h new file mode 100644 index 00000000000..81b87935111 --- /dev/null +++ b/RALICE/wa98/Wa98Convert.h @@ -0,0 +1,53 @@ +#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 diff --git a/RALICE/wa98/Wa98Event.cxx b/RALICE/wa98/Wa98Event.cxx new file mode 100644 index 00000000000..80dbaf6809e --- /dev/null +++ b/RALICE/wa98/Wa98Event.cxx @@ -0,0 +1,385 @@ +// $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)AddVetoSignal(v); + } + } + } +} +/////////////////////////////////////////////////////////////////////////// diff --git a/RALICE/wa98/Wa98Event.h b/RALICE/wa98/Wa98Event.h new file mode 100644 index 00000000000..853a6eb29bd --- /dev/null +++ b/RALICE/wa98/Wa98Event.h @@ -0,0 +1,54 @@ +#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 diff --git a/RALICE/wa98/history.txt b/RALICE/wa98/history.txt new file mode 100644 index 00000000000..84fd2907dc8 --- /dev/null +++ b/RALICE/wa98/history.txt @@ -0,0 +1,42 @@ +////////////////////////////////////////////////////////////////////////////////////// +// 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. + -- 2.39.3