]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Updated classes to cope with new digits/raw data
authorcoppedis <coppedis@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 26 Oct 2007 09:22:18 +0000 (09:22 +0000)
committercoppedis <coppedis@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 26 Oct 2007 09:22:18 +0000 (09:22 +0000)
ZDC/AliZDCCalibData.cxx
ZDC/AliZDCCalibData.h
ZDC/AliZDCDataDCS.cxx
ZDC/AliZDCDataDCS.h
ZDC/AliZDCPreprocessor.cxx
ZDC/AliZDCRawStream.cxx
ZDC/AliZDCRawStream.h
ZDC/AliZDCReco.cxx
ZDC/AliZDCReco.h
ZDC/AliZDCReconstructor.cxx
ZDC/AliZDCReconstructor.h

index e4cf998939e4e3f2b68b9b4aa68ca31fa6814129..eb1d424413fb869deb554da08a2d05a82228b775 100644 (file)
@@ -46,7 +46,7 @@ AliZDCCalibData::AliZDCCalibData(const char* name)
 AliZDCCalibData::AliZDCCalibData(const AliZDCCalibData& calibda) :
   TNamed(calibda)
 {
-// copy constructor
+  // Copy constructor
   SetName(calibda.GetName());
   SetTitle(calibda.GetName());
   Reset();
index ca651fd83a0ecfa1c1f9c164208994735c70073f..f5c7e97eee28165f8151fb93fe02cb952195833e 100644 (file)
@@ -124,7 +124,7 @@ class AliZDCCalibData: public TNamed {
   Float_t  fEZP2MaxValue;       // Max value of ZP2 vs. Nspec p correlation
   Float_t  fEZDC2MaxValue;      // Max value of ZDC2 vs. Nspec n+p correlation
   //
-  ClassDef(AliZDCCalibData,10)    // ZDC  Calibration data
+  ClassDef(AliZDCCalibData,11)    // ZDC  Calibration data
 };
 
 #endif
index 8fc73dd1f9434c7a555c63ac3b6ad8c278b09fd9..dfe0b32e6b58f78a2b693a6081c3dfd59484dca6 100644 (file)
@@ -144,6 +144,12 @@ void AliZDCDataDCS::Init()
    //
    fAliasNames[24]  = "ZDC_ZEM_HV0.actual.vMon";
    fAliasNames[25]  = "ZDC_ZEM_HV1.actual.vMon";
+   //
+   fAliasNames[26]  = "ZDC_ZEM_HV0.actual.vMon";
+   fAliasNames[27]  = "ZDC_ZEM_HV1.actual.vMon";
+   //
+   fAliasNames[28]  = "ZDC_REFA_HV0.actual.vMon";
+   fAliasNames[29]  = "ZDC_REFC_HV1.actual.vMon";
  
 }
 
index 34ce049b9f2aba328c39f3bc9535a6cb4c70c1cd..32fad5c293b7130cb835c3db19093341f3756b87 100644 (file)
@@ -12,7 +12,7 @@
 
 class AliZDCDataDCS : public TObject {
 public:
-       enum {kNAliases=26, kNGraphs=22};
+       enum {kNAliases=28, kNGraphs=24};
 
        AliZDCDataDCS();
        AliZDCDataDCS(Int_t nRun, UInt_t startTime, UInt_t endTime);
index ffb406cd17e82a3657fbb319d2036a104fe551c1..72430e856bec9b90f9e67f9163c5f860cec1d537 100644 (file)
@@ -66,14 +66,8 @@ UInt_t AliZDCPreprocessor::Process(TMap* dcsAliasMap)
   if(!dcsAliasMap) return 1;
 
   // The processing of the DCS input data is forwarded to AliZDCDataDCS
-  Float_t DCSValues[26];
+  Float_t DCSValues[28]; // DCSAliases=28
   fData->ProcessData(*dcsAliasMap, DCSValues);
-  // Store DCS data for reference
-  AliCDBMetaData metadata;
-  metadata.SetResponsible("Chiara Oppedisano");
-  metadata.SetComment("DCS data for ZDC");
-  Bool_t resStore = kFALSE;
-  resStore = StoreReferenceData("DCS","Data",fData,&metadata);
   //dcsAliasMap->Print("");
   //
   // --- Writing ZDC table positions into alignment object
@@ -130,7 +124,8 @@ if (runType = "PEDESTAL_RUN") {
          return 1;
        }
        const char* PedFileName = stringPedFileName.Data();
-       const Int_t NZDCch = 44;
+       // no. ADCch = (22 signal ch. + 2 reference PMs) * 2 gain chain = 48
+       const Int_t NZDCch = 48;
        if(PedFileName){
          FILE *file;
          if((file = fopen(PedFileName,"r")) == NULL){
index 84b330d2136f39f6562c325a6d974131262f3b81..d481914b42aec7f621ae9558337d40d553dd1126 100644 (file)
@@ -39,7 +39,8 @@ AliZDCRawStream::AliZDCRawStream(AliRawReader* rawReader) :
   fRawADC(0),   
   fADCModule(0),        
   fADCValue(-1),        
-  fADCGain(0)
+  fADCGain(0),
+  fIsADCDataWord(kFALSE)
 {
   // Create an object to read ZDC raw digits
 
@@ -48,11 +49,17 @@ AliZDCRawStream::AliZDCRawStream(AliRawReader* rawReader) :
 
 //_____________________________________________________________________________
 AliZDCRawStream::AliZDCRawStream(const AliZDCRawStream& stream) :
-  TObject(stream),
-  fADCValue(-1)
+  TObject(stream)
 {
   // Copy constructor
-  Fatal("AliZDCRawStream", "copy constructor not implemented");
+  fRawADC = stream.GetADCRaw();         
+  for(Int_t j=0; j<2; j++) fSector[j] = stream.GetSector(j);    
+  fADCModule = stream.GetADCModule();   
+  fADCValue = stream.GetADCValue();     
+  fADCGain = stream.GetADCGain();       
+  fIsADCDataWord = stream.IsADCDataWord();
+  
+    
 }
 
 //_____________________________________________________________________________
index 187e06d3bf8dafb5c22d15f16cc8f609d0880fd1..d919374ee005f3fb531fc3afc1a71ba8c840268a 100644 (file)
@@ -22,9 +22,10 @@ class AliZDCRawStream: public TObject {
     virtual ~AliZDCRawStream();
     virtual Bool_t   Next();
 
+    UInt_t           GetADCRaw() const {return fRawADC;};
     Int_t            GetSector(Int_t i) const {return fSector[i];};
+    Int_t            GetADCModule() const {return fADCModule;};
     Int_t            GetADCValue() const {return fADCValue;};
-    UInt_t           GetADCRaw() const {return fRawADC;};
     Int_t            GetADCGain() const {return fADCGain;};
     Bool_t           IsADCDataWord() const {return fIsADCDataWord;};
 
index f922c4f74a2e8a3aaf9fdb2a3dbf0f10c9e08bf2..e4ce02951ea5cf421c6d15d22fb9917f7be0aec1 100644 (file)
@@ -42,7 +42,8 @@ AliZDCReco::AliZDCReco() :
 //  fZN2EnTow(0x0),
 //  fZP2EnTow(0x0),
   //
-  fZEMsignal(0),
+  fZEM1signal(0),
+  fZEM2signal(0),
   //
   fNDetSpecNLeft(0),
   fNDetSpecPLeft(0),
@@ -70,7 +71,7 @@ AliZDCReco::AliZDCReco(Float_t ezn1, Float_t ezp1, Float_t ezn2, Float_t ezp2,
             //
             Float_t* ezn1tow, Float_t* ezp1tow,
             Float_t* ezn2tow, Float_t* ezp2tow, 
-            Float_t ezem
+            Float_t ezem1, Float_t ezem2,
             //    
             Int_t detspnLeft,  Int_t detsppLeft, Int_t detspnRight,
             Int_t detsppRight,  Int_t trspnLeft, Int_t trsppLeft, 
@@ -84,7 +85,8 @@ AliZDCReco::AliZDCReco(Float_t ezn1, Float_t ezp1, Float_t ezn2, Float_t ezp2,
   fZN2Energy(ezn2),
   fZP2Energy(ezp2),
   //
-  fZEMsignal(ezem),
+  fZEM1signal(ezem1),
+  fZEM2signal(ezem2),
   //
   fNDetSpecNLeft(detspnLeft),
   fNDetSpecPLeft(detsppLeft),
@@ -132,7 +134,8 @@ AliZDCReco::AliZDCReco(const AliZDCReco &oldreco) :
      fZP2EnTow[i]  = oldreco.GetZP2EnTow(i);
   }
   //
-  fZEMsignal = oldreco.GetZEMsignal(); 
+  fZEM1signal = oldreco.GetZEM1signal();       
+  fZEM2signal = oldreco.GetZEM2signal();       
   //   
   fNDetSpecNLeft = oldreco.GetNDetSpecNLeft(); 
   fNDetSpecPLeft = oldreco.GetNDetSpecPLeft(); 
@@ -154,13 +157,14 @@ void AliZDCReco::Print(Option_t *) const {
   //
   // Printing Reconstruction Parameters
   //
-  printf(" \t ---   Reconstruction -> EZN = %f TeV, EZP = %f TeV,  EZEM = %f GeV \n "          
+  printf(" \t ---   Reconstruction -> EZN1 = %f TeV, EZP1 = %f TeV,  EZEM1 = %f GeV ,  EZEM2 = %f GeV \n "             
+        "EZN2 = %f TeV, EZP2 = %f TeV \n"
         " \t NDetSpecNLeft = %d, NDetSpecPLeft = %d, NspecnLeft = %d,"
         " NspecpLeft = %d, NpartLeft = %d"
         " \t NDetSpecNRight = %d, NDetSpecPRight = %d, NspecnRight = %d,"
         " NspecpRight = %d, NpartRight = %d"
         " \t b = %f fm\n ", 
-        fZN1Energy,fZP1Energy,fZEMsignal,
+        fZN1Energy,fZP1Energy,fZEM1signal,fZEM2signal, fZN2Energy, fZP2Energy,
         fNDetSpecNLeft,fNDetSpecPLeft,fNTrueSpecNLeft,fNTrueSpecPLeft,fNPartLeft,
         fNDetSpecNRight,fNDetSpecPRight,fNTrueSpecNRight,fNTrueSpecPRight,fNPartRight,
         fImpPar);
index a8fd8b250d5550df74a76b943395a9d33e22e5b0..049888af6ed787b8f1122dfd33d40a1a8a642080 100644 (file)
@@ -16,7 +16,7 @@ public:
   AliZDCReco(Float_t ezn1, Float_t ezp1, Float_t ezn2, Float_t ezp2,  
             Float_t* ezn1tow, Float_t* ezp1tow,
             Float_t* ezn2tow, Float_t* ezp2tow, 
-            Float_t ezem, 
+            Float_t ezem1, Float_t ezem2
             //    
             Int_t detspnLeft,  Int_t detsppLeft, Int_t detspnRight, Int_t detsppRight,  
             Int_t trspnLeft, Int_t trsppLeft, Int_t trspLeft, 
@@ -38,7 +38,8 @@ public:
   virtual Float_t GetZN2EnTow(Int_t tow)  const {return fZN2EnTow[tow];}
   virtual Float_t GetZP2EnTow(Int_t tow)  const {return fZP2EnTow[tow];}
   //
-  virtual Float_t GetZEMsignal()   const  {return fZEMsignal;}
+  virtual Float_t GetZEM1signal()   const  {return fZEM1signal;}
+  virtual Float_t GetZEM2signal()   const  {return fZEM2signal;}
   //
   virtual Int_t   GetNDetSpecNLeft()   const {return fNDetSpecNLeft;}
   virtual Int_t   GetNDetSpecPLeft()   const {return fNDetSpecPLeft;}
@@ -69,7 +70,8 @@ private:
   Float_t fZN2EnTow[5];        // Energy in ZN2 towers
   Float_t fZP2EnTow[5]; // Energy in ZP2 towers
   //
-  Float_t fZEMsignal;  // Signal in EM ZDC
+  Float_t fZEM1signal; // Signal in EM1 ZDC
+  Float_t fZEM2signal; // Signal in EM2 ZDC
   //
   Int_t          fNDetSpecNLeft;  // Number of spectator neutrons detected
   Int_t          fNDetSpecPLeft;  // Number of spectator protons detected
@@ -86,7 +88,7 @@ private:
   Float_t fImpPar;     // Estimate of the impact parameter
 
 
-  ClassDef(AliZDCReco,2)  // RecPoints for the Zero Degree Calorimeters
+  ClassDef(AliZDCReco,3)  // RecPoints for the Zero Degree Calorimeters
 };
  
 #endif
index 61fd79172f3a25449b47df39d600aead57690912..1d645672e7261a4ee1296655a74b328109b7c974 100644 (file)
@@ -107,10 +107,10 @@ void AliZDCReconstructor::Reconstruct(TTree* digitsTree, TTree* clustersTree) co
 
   // loop over digits
   Float_t tZN1CorrHG[]={0.,0.,0.,0.,0.}, tZP1CorrHG[]={0.,0.,0.,0.,0.}; 
-  Float_t dZEMCorrHG=0.; 
+  Float_t dZEM1CorrHG=0., dZEM2CorrHG=0.; 
   Float_t tZN2CorrHG[]={0.,0.,0.,0.,0.}, tZP2CorrHG[]={0.,0.,0.,0.,0.};
   Float_t tZN1CorrLG[]={0.,0.,0.,0.,0.}, tZP1CorrLG[]={0.,0.,0.,0.,0.};
-  Float_t dZEMCorrLG=0.; 
+  Float_t dZEM1CorrLG=0., dZEM2CorrLG=0.; 
   Float_t tZN2CorrLG[]={0.,0.,0.,0.,0.}, tZP2CorrLG[]={0.,0.,0.,0.,0.};
   
   //printf("\n\t # of digits in tree: %d\n",(Int_t) digitsTree->GetEntries());
@@ -145,27 +145,27 @@ void AliZDCReconstructor::Reconstruct(TTree* digitsTree, TTree* clustersTree) co
     else if(det == 3){
        if(quad == 1){      // *** ZEM1  
         pedindex = quad+19;
-         dZEMCorrHG += (Float_t) (digit.GetADCValue(0)-meanPed[pedindex]); 
-         if(dZEMCorrHG<0.) dZEMCorrHG = 0.;
-         dZEMCorrLG += (Float_t) (digit.GetADCValue(1)-meanPed[pedindex+2]); 
-         if(dZEMCorrLG<0.) dZEMCorrLG = 0.;
+         dZEM1CorrHG += (Float_t) (digit.GetADCValue(0)-meanPed[pedindex]); 
+         if(dZEM1CorrHG<0.) dZEM1CorrHG = 0.;
+         dZEM1CorrLG += (Float_t) (digit.GetADCValue(1)-meanPed[pedindex+2]); 
+         if(dZEM1CorrLG<0.) dZEM1CorrLG = 0.;
          //printf("\t pedindex %d ADC(0) = %d ped = %1.0f ADCCorr = %1.0f\n", 
-        //     pedindex, digit.GetADCValue(0), meanPed[pedindex], dZEMCorrHG);
+        //     pedindex, digit.GetADCValue(0), meanPed[pedindex], dZEM1CorrHG);
          //printf("\t pedindex %d ADC(1) = %d ped = %1.0f ADCCorr = %1.0f\n", 
-        //     pedindex+2, digit.GetADCValue(1), meanPed[pedindex+2], dZEMCorrLG);
-         ////printf("\t pedindex %d dZEMCorrHG = %1.0f dZEMCorrLG = %1.0f\n", pedindex, dZEMCorrHG, dZEMCorrLG);
+        //     pedindex+2, digit.GetADCValue(1), meanPed[pedindex+2], dZEM1CorrLG);
+         ////printf("\t pedindex %d dZEMCorrHG = %1.0f dZEMCorrLG = %1.0f\n", pedindex, dZEM1CorrHG, dZEM1CorrLG);
        }
-       else if(quad == 2){  // *** ZEM1
+       else if(quad == 2){  // *** ZEM2
         pedindex = quad+19;
-         dZEMCorrHG += (Float_t) (digit.GetADCValue(0)-meanPed[pedindex]); 
-         if(dZEMCorrHG<0.) dZEMCorrHG = 0.;
-         dZEMCorrLG += (Float_t) (digit.GetADCValue(1)-meanPed[pedindex+2]); 
-         if(dZEMCorrLG<0.) dZEMCorrLG = 0.;
+         dZEM2CorrHG += (Float_t) (digit.GetADCValue(0)-meanPed[pedindex]); 
+         if(dZEM2CorrHG<0.) dZEM2CorrHG = 0.;
+         dZEM2CorrLG += (Float_t) (digit.GetADCValue(1)-meanPed[pedindex+2]); 
+         if(dZEM2CorrLG<0.) dZEM2CorrLG = 0.;
          //printf("\t pedindex %d ADC(0) = %d ped = %1.0f ADCCorr = %1.0f\n", 
-        //     pedindex, digit.GetADCValue(0), meanPed[pedindex], dZEMCorrHG);
+        //     pedindex, digit.GetADCValue(0), meanPed[pedindex], dZEM2CorrHG);
          //printf("\t pedindex %d ADC(1) = %d ped = %1.0f ADCCorr = %1.0f\n", 
-        //     pedindex+2, digit.GetADCValue(1),meanPed[pedindex+2], dZEMCorrLG);
-         ////printf("\t pedindex %d dZEMCorrHG = %1.0f dZEMCorrLG = %1.0f\n", pedindex, dZEMCorrHG, dZEMCorrLG);
+        //     pedindex+2, digit.GetADCValue(1),meanPed[pedindex+2], dZEM2CorrLG);
+         ////printf("\t pedindex %d dZEMCorrHG = %1.0f dZEMCorrLG = %1.0f\n", pedindex, dZEM2CorrHG, dZEM2CorrLG);
        }
     }
     else if(det == 4){  // *** ZN2
@@ -191,7 +191,7 @@ void AliZDCReconstructor::Reconstruct(TTree* digitsTree, TTree* clustersTree) co
   // reconstruct the event
     ReconstructEvent(clustersTree, tZN1CorrHG, tZP1CorrHG, tZN2CorrHG, 
        tZP2CorrHG, tZN1CorrLG, tZP1CorrLG, tZN2CorrLG, 
-       tZP2CorrLG, dZEMCorrHG);
+       tZP2CorrLG, dZEM1CorrHG, dZEM2CorrHG);
 
 }
 
@@ -209,10 +209,10 @@ void AliZDCReconstructor::Reconstruct(AliRawReader* rawReader, TTree* clustersTr
 
   // loop over raw data rawDatas
   Float_t tZN1CorrHG[]={0.,0.,0.,0.,0.}, tZP1CorrHG[]={0.,0.,0.,0.,0.};
-  Float_t dZEMCorrHG=0.;
+  Float_t dZEM1CorrHG=0., dZEM2CorrHG=0.;
   Float_t tZN2CorrHG[]={0.,0.,0.,0.,0.}, tZP2CorrHG[]={0.,0.,0.,0.,0.};
   Float_t tZN1CorrLG[]={0.,0.,0.,0.,0.}, tZP1CorrLG[]={0.,0.,0.,0.,0.};
-  Float_t dZEMCorrLG=0.; 
+  Float_t dZEM1CorrLG=0., dZEM2CorrLG=0.; 
   Float_t tZN2CorrLG[]={0.,0.,0.,0.,0.}, tZP2CorrLG[]={0.,0.,0.,0.,0.};
   //
   AliZDCRawStream rawData(rawReader);
@@ -236,13 +236,13 @@ void AliZDCReconstructor::Reconstruct(AliRawReader* rawReader, TTree* clustersTr
       else if(det == 3){ 
         if(quad==1){    
           pedindex = quad+20;
-          if(gain == 0) dZEMCorrHG += (Float_t) (rawData.GetADCValue()-meanPed[pedindex]); 
-          else dZEMCorrLG += (Float_t) (rawData.GetADCValue()-meanPed[pedindex+2]); 
+          if(gain == 0) dZEM1CorrHG += (Float_t) (rawData.GetADCValue()-meanPed[pedindex]); 
+          else dZEM1CorrLG += (Float_t) (rawData.GetADCValue()-meanPed[pedindex+2]); 
         }
         else if(quad==2){ 
           pedindex = rawData.GetSector(1)+21;
-          if(gain == 0) dZEMCorrHG += (Float_t) (rawData.GetADCValue()-meanPed[pedindex]); 
-          else dZEMCorrLG += (Float_t) (rawData.GetADCValue()-meanPed[pedindex+2]); 
+          if(gain == 0) dZEM2CorrHG += (Float_t) (rawData.GetADCValue()-meanPed[pedindex]); 
+          else dZEM2CorrLG += (Float_t) (rawData.GetADCValue()-meanPed[pedindex+2]); 
         }
       }
       else if(det == 4){       
@@ -261,7 +261,7 @@ void AliZDCReconstructor::Reconstruct(AliRawReader* rawReader, TTree* clustersTr
   // reconstruct the event
     ReconstructEvent(clustersTree, tZN1CorrHG, tZP1CorrHG, tZN2CorrHG, 
        tZP2CorrHG, tZN1CorrLG, tZP1CorrLG, tZN2CorrLG, 
-       tZP2CorrLG, dZEMCorrHG);
+       tZP2CorrLG, dZEM1CorrHG, dZEM2CorrHG);
 
 }
 
@@ -271,7 +271,7 @@ void AliZDCReconstructor::ReconstructEvent(TTree *clustersTree,
                Float_t* ZN2ADCCorrHG, Float_t* ZP2ADCCorrHG, 
                Float_t* ZN1ADCCorrLG, Float_t* ZP1ADCCorrLG, 
                Float_t* ZN2ADCCorrLG, Float_t* ZP2ADCCorrLG, 
-               Float_t corrADCZEMHG) const
+               Float_t corrADCZEM1HG, Float_t corrADCZEM2HG) const
 {
   // ***** Reconstruct one event
   
@@ -440,6 +440,8 @@ void AliZDCReconstructor::ReconstructEvent(TTree *clustersTree,
   //
   // *** RECONSTRUCTION FROM REAL DATA
   //
+  Float_t corrADCZEMHG = corrADCZEM1HG + corrADCZEM2HG;
+  //
   if(corrADCZEMHG > supValueZEM){
     nGenSpecNLeft  = (Int_t) (fZNCen->Eval(calibSumZN1HG));
     nGenSpecPLeft  = (Int_t) (fZPCen->Eval(calibSumZP1HG));
@@ -501,7 +503,7 @@ void AliZDCReconstructor::ReconstructEvent(TTree *clustersTree,
   // create the output tree
   AliZDCReco reco(calibSumZN1HG, calibSumZP1HG, calibSumZN2HG, calibSumZP2HG, 
                  calibTowZN1LG, calibTowZN2LG, calibTowZP1LG, calibTowZP2LG, 
-                 corrADCZEMHG, 
+                 corrADCZEM1HG, corrADCZEM2HG,
                  nDetSpecNLeft, nDetSpecPLeft, nDetSpecNRight, nDetSpecPRight, 
                  nGenSpecNLeft, nGenSpecPLeft, nGenSpecLeft, nGenSpecNRight, 
                  nGenSpecPRight, nGenSpecRight,
@@ -534,7 +536,7 @@ void AliZDCReconstructor::FillZDCintoESD(TTree *clustersTree, AliESDEvent* esd)
              reco.GetZN2Energy(), reco.GetZP2Energy(), 
              reco.GetNPartLeft());
   */
-  esd->SetZDC(reco.GetZN1Energy(), reco.GetZP1Energy(), reco.GetZEMsignal(),
+  esd->SetZDC(reco.GetZN1Energy(), reco.GetZP1Energy(), reco.GetZEM1signal(), reco.GetZEM2signal(),
              reco.GetZN2Energy(), reco.GetZP2Energy(), 
              reco.GetNPartLeft());
   
index 429cda2f85fc8e2a0e55aa0e2e80eae1a22c7faf..fedb33d1ae2e968c137e20df01f16054e35d975b 100644 (file)
@@ -46,7 +46,7 @@ private:
                Float_t* ZP1ADCCorrHG, Float_t* ZN2ADCCorrHG, 
                Float_t* ZP2ADCCorrHG, Float_t* ZN1ADCCorrLG, 
                Float_t* ZP1ADCCorrLG, Float_t* ZN2ADCCorrLG, 
-               Float_t* ZP2ADCCorrLG, Float_t ZEMADCCorrHG) const;
+               Float_t* ZP2ADCCorrLG, Float_t ZEM1ADCCorrHG, Float_t ZEM2ADCCorrHG) const;
   void   FillZDCintoESD(TTree *clustersTree, AliESDEvent*esd) const;
 
   TF1*   fZNCen;     //! Nspectator n true vs. EZN