#include <TFile.h>
#include <TSystem.h>
#include <TRandom.h>
+#include <TParticle.h>
// --- AliRoot header files
#include "AliDetector.h"
#include "AliZDCDigitizer.h"
#include "AliZDCRawStream.h"
#include "AliZDCPedestals.h"
-#include "AliZDCCalib.h"
+#include "AliZDCEnCalib.h"
+#include "AliZDCTowerCalib.h"
#include "AliFstream.h"
AliDetector(),
fNoShower(0),
fPedCalib(0),
- fCalibData(0),
- fZDCCalibFName("")
+ fEnCalibData(0),
+ fTowCalibData(0),
+ fZDCCalibFName(""),
+ fSpectatorTracked(1)
{
//
// Default constructor for the Zero Degree Calorimeter base class
AliDetector(name,title),
fNoShower (0),
fPedCalib(0),
- fCalibData(0),
- fZDCCalibFName("")
+ fEnCalibData(0),
+ fTowCalibData(0),
+ fZDCCalibFName(""),
+ fSpectatorTracked(1)
{
//
// Standard constructor for the Zero Degree Calorimeter base class
//
fIshunt = 0;
- delete fPedCalib;
- delete fCalibData;
+ if(fPedCalib) delete fPedCalib;
+ if(fEnCalibData) delete fEnCalibData;
+ if(fEnCalibData) delete fEnCalibData;
}
AliDetector("ZDC","ZDC"),
fNoShower(ZDC.fNoShower),
fPedCalib(ZDC.fPedCalib),
-fCalibData(ZDC.fCalibData),
-fZDCCalibFName(ZDC.fZDCCalibFName)
+fEnCalibData(ZDC.fEnCalibData),
+fTowCalibData(ZDC.fTowCalibData),
+fZDCCalibFName(ZDC.fZDCCalibFName),
+fSpectatorTracked(ZDC.fSpectatorTracked)
{
// copy constructor
}
if(this!=&ZDC){
fNoShower = ZDC.fNoShower;
fPedCalib = ZDC.fPedCalib;
- fCalibData = ZDC.fCalibData;
+ fEnCalibData = ZDC.fEnCalibData;
+ fTowCalibData = ZDC.fTowCalibData;
fZDCCalibFName = ZDC.fZDCCalibFName;
} return *this;
}
// Add a ZDC hit to the hit list.
static Float_t trackTime=0., primKinEn=0., xImpact=0., yImpact=0., sFlag=0.;
- static Int_t pcPDGcode;
+ static Int_t pcPDGcode, motPDGcode;
AliZDCHit *newquad, *curprimquad;
newquad = new AliZDCHit(fIshunt, track, vol, hits);
if(fNhits==0){
// First hit -> setting flag for primary or secondary particle
- Int_t primary = gAlice->GetMCApp()->GetPrimary(track);
+ TParticle * p = gAlice->GetMCApp()->Particle(track);
+ Int_t imo = p->GetFirstMother();
//
- if(track != primary){
+ if(track != imo){
newquad->SetSFlag(1); // SECONDARY particle entering the ZDC
}
- else if(track == primary){
+ else if(track == imo){
newquad->SetSFlag(0); // PRIMARY particle entering the ZDC
- }
- sFlag = newquad->GetSFlag();
- primKinEn = newquad->GetPrimKinEn();
- xImpact = newquad->GetXImpact();
- yImpact = newquad->GetYImpact();
- pcPDGcode = newquad->GetPDGCode();
- trackTime = newquad->GetTrackTOF();
+ }
+ //
+ sFlag = newquad->GetSFlag();
+ primKinEn = newquad->GetPrimKinEn();
+ xImpact = newquad->GetXImpact();
+ yImpact = newquad->GetYImpact();
+ pcPDGcode = newquad->GetPDGCode();
+ motPDGcode = newquad->GetMotherPDGCode();
+ trackTime = newquad->GetTrackTOF();
}
else{
newquad->SetPrimKinEn(primKinEn);
newquad->SetYImpact(yImpact);
newquad->SetSFlag(sFlag);
newquad->SetPDGCode(pcPDGcode);
+ newquad->SetMotherPDGCode(motPDGcode);
newquad->SetTrackTOF(trackTime);
}
// Event loop
for(Int_t iEvent = 0; iEvent < runLoader->GetNumberOfEvents(); iEvent++) {
Float_t pmZNC[5], pmZPC[5], pmZNA[5], pmZPA[5], pmZEM1=0., pmZEM2=0.;
- for(Int_t i=0; i<4; i++) pmZNC[i] = pmZPC[i] = pmZNA[i] = pmZPA[i] = 0;
+ for(Int_t i=0; i<5; i++) pmZNC[i] = pmZPC[i] = pmZNA[i] = pmZPA[i] = 0;
runLoader->GetEvent(iEvent);
TTree* treeH = fLoader->TreeH();
AliDigitizer* AliZDC::CreateDigitizer(AliRunDigitizer* manager) const
{
// Create the digitizer for ZDC
-
- return new AliZDCDigitizer(manager);
+ AliZDCDigitizer *zdcDigitizer = new AliZDCDigitizer(manager);
+ if(fSpectatorTracked==0) zdcDigitizer->SetSpectators2Track();
+ //printf("\n**************************ZDC digitizer created with Spectators2Track = %d\n\n", fSpectatorTracked);
+ return zdcDigitizer;
}
//_____________________________________________________________________________
Error("Digits2Raw", "sector[0] = %d, sector[1] = %d",
digit.GetSector(0), digit.GetSector(1));
continue;
- }
-
-
+ }
}
//
/*
// End of Block
UInt_t lADCEndBlockGEO = lADCHeaderGEO;
- UInt_t lADCEndBlockEvCount = gAlice->GetEventNrInRun();
+ // Event counter in ADC EOB -> getting no. of events in run from AliRunLoader
+ // get run loader
+ AliRunLoader* runLoader = fLoader->GetRunLoader();
+ UInt_t lADCEndBlockEvCount = runLoader->GetEventNumber();
//
lADCEndBlock = lADCEndBlockGEO << 27 | 0x1 << 26 | lADCEndBlockEvCount;
//printf("\t AliZDC::Digits2Raw -> ADCEndBlock = %d\n",lADCEndBlock);
-
// open the output file
char fileName[30];
strcpy(fileName,AliDAQ::DdlFileName("ZDC",0));