From 994235ddfb0d2fd0a229fd9f962aa248c9dfc81d Mon Sep 17 00:00:00 2001 From: martinez Date: Tue, 28 Mar 2000 14:19:02 +0000 Subject: [PATCH] Adding new classe AliPHOSv0hits (new name for coding conventions --- PHOS/AliPHOSv0hits.cxx | 191 +++++++++++++++++++++++++++++++++++++++++ PHOS/AliPHOSv0hits.h | 35 ++++++++ 2 files changed, 226 insertions(+) create mode 100644 PHOS/AliPHOSv0hits.cxx create mode 100644 PHOS/AliPHOSv0hits.h diff --git a/PHOS/AliPHOSv0hits.cxx b/PHOS/AliPHOSv0hits.cxx new file mode 100644 index 00000000000..b290081326a --- /dev/null +++ b/PHOS/AliPHOSv0hits.cxx @@ -0,0 +1,191 @@ +/************************************************************************** + * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * * + * Author: The ALICE Off-line Project. * + * Contributors are mentioned in the code where appropriate. * + * * + * Permission to use, copy, modify and distribute this software and its * + * documentation strictly for non-commercial purposes is hereby granted * + * without fee, provided that the above copyright notice appears in all * + * copies and that both the copyright notice and this permission notice * + * appear in the supporting documentation. The authors make no claims * + * about the suitability of this software for any purpose. It is * + * provided "as is" without express or implied warranty. * + **************************************************************************/ + +/* $Id$ */ +//_________________________________________________________________________ +// Version of AliPHOSv0 which allows for keeping all hits in TreeH +// +//*-- Author: Gines MARTINEZ (SUBATECH) + + +// --- ROOT system --- + +#include "TBRIK.h" +#include "TNode.h" +#include "TRandom.h" + +// --- Standard library --- + +#include +#include +#include +#include + +// --- AliRoot header files --- + +#include "AliPHOSv0_hits.h" +#include "AliPHOSHit.h" +#include "AliPHOSDigit.h" +#include "AliPHOSReconstructioner.h" +#include "AliRun.h" +#include "AliConst.h" + +ClassImp(AliPHOSv0hits) + +//____________________________________________________________________________ +AliPHOSv0hits::AliPHOSv0hits() +{ + // ctor + fNTmpHits = 0 ; + fTmpHits = 0 ; +} + +//____________________________________________________________________________ +AliPHOSv0hits::AliPHOSv0hits(const char *name, const char *title): + AliPHOSv0(name,title) +{ + fHits= new TClonesArray("AliPHOSHit",1000) ; +} + +//____________________________________________________________________________ +AliPHOSv0hits::~AliPHOSv0hits() +{ + // dtor + fTmpHits->Delete() ; + delete fTmpHits ; + fTmpHits = 0 ; + + fEmcClusters->Delete() ; + delete fEmcClusters ; + fEmcClusters = 0 ; + + fPpsdClusters->Delete() ; + delete fPpsdClusters ; + fPpsdClusters = 0 ; + + fTrackSegments->Delete() ; + delete fTrackSegments ; + fTrackSegments = 0 ; +} + +//____________________________________________________________________________ +void AliPHOSv0hits::AddHit(Int_t primary, Int_t Id, Float_t * hits) +{ + // Add a hit to the hit list. + // In this version of AliPHOSv0, a PHOS hit is real geant + // hits in a single crystal or in a single PPSD gas cell + + // cout << "Primary particle is " << primary << endl; + //cout << "Vol Id is " << Id << endl; + //cout << "hits is " << hits[0] << " " << hits[1] << " " << hits[2] << " " << hits[3] <Print(""); + + newHit = new AliPHOSHit(primary, Id, hits) ; + + // We DO want to save in TreeH the raw hits + // TClonesArray &lhits = *fHits; + cout << " Adding a hit to fHits TCloneArray number " << fNhits << endl ; + new(ltmphits[fNhits]) AliPHOSHit(*newHit) ; + fNhits++ ; + + cout << " Added a hit to fHits TCloneArray number " << fNhits << endl ; + // We do not want to save in TreeH the raw hits + // new(lhits[fNhits]) AliPHOSHit(*newHit) ; + // fNhits++ ; + + // Please note that the fTmpHits array must survive up to the + // end of the events, so it does not appear e.g. in ResetHits() ( + // which is called at the end of each primary). + + delete newHit; + +} + + + + +//___________________________________________________________________________ +void AliPHOSv0hits::FinishEvent() +{ + // Makes the digits from the sum of summed hit in a single crystal or PPSD gas cell + // Adds to the energy the electronic noise + // Keeps digits with energy above fDigitThreshold + + // Save the cumulated hits instead of raw hits (need to create the branch myself) + // It is put in the Digit Tree because the TreeH is filled after each primary + // and the TreeD at the end of the event. + + Int_t i ; + Int_t relid[4]; + Int_t j ; + TClonesArray &lDigits = *fDigits ; + AliPHOSHit * hit ; + AliPHOSDigit * newdigit ; + AliPHOSDigit * curdigit ; + Bool_t deja = kFALSE ; + + for ( i = 0 ; i < fNhits ; i++ ) { + hit = (AliPHOSHit*)fHits->At(i) ; + newdigit = new AliPHOSDigit( hit->GetPrimary(), hit->GetId(), Digitize( hit->GetEnergy() ) ) ; + deja =kFALSE ; + for ( j = 0 ; j < fNdigits ; j++) { + curdigit = (AliPHOSDigit*) lDigits[j] ; + if ( *curdigit == *newdigit) { + *curdigit = *curdigit + *newdigit ; + deja = kTRUE ; + } + } + if ( !deja ) { + new(lDigits[fNdigits]) AliPHOSDigit(* newdigit) ; + fNdigits++ ; + } + + delete newdigit ; + } + + // Noise induced by the PIN diode of the PbWO crystals + + Float_t energyandnoise ; + for ( i = 0 ; i < fNdigits ; i++ ) { + newdigit = (AliPHOSDigit * ) fDigits->At(i) ; + fGeom->AbsToRelNumbering(newdigit->GetId(), relid) ; + + if (relid[1]==0){ // Digits belong to EMC (PbW0_4 crystals) + energyandnoise = newdigit->GetAmp() + Digitize(gRandom->Gaus(0., fPinElectronicNoise)) ; + + if (energyandnoise < 0 ) + energyandnoise = 0 ; + + if ( newdigit->GetAmp() < fDigitThreshold ) // if threshold not surpassed, remove digit from list + fDigits->RemoveAt(i) ; + } + } + + fDigits->Compress() ; + + fNdigits = fDigits->GetEntries() ; + for (i = 0 ; i < fNdigits ; i++) { + newdigit = (AliPHOSDigit *) fDigits->At(i) ; + newdigit->SetIndexInList(i) ; + } + +} + diff --git a/PHOS/AliPHOSv0hits.h b/PHOS/AliPHOSv0hits.h new file mode 100644 index 00000000000..e1f06b0d655 --- /dev/null +++ b/PHOS/AliPHOSv0hits.h @@ -0,0 +1,35 @@ +#ifndef ALIPHOSV0HITS_H +#define ALIPHOSV0HITS_H +/* Copyright(c) 1998-1999-2000, ALICE Experiment at CERN, All rights reserved. * + * See cxx source for full Copyright notice */ +//_________________________________________________________________________ +// Version of AliPHOSv0 which allows for keeping all hits in TreeH +// This version is NOT recommended for Reconstruction analysis +// +//*-- Author: Gines MARTINEZ (SUBATECH) + +// --- ROOT system --- +#include "TClonesArray.h" + +// --- AliRoot header files --- +#include "AliPHOSv0.h" +#include "AliPHOSReconstructioner.h" + +class AliPHOSv0hits : public AliPHOSv0 { + +public: + + AliPHOSv0hits(void) ; + AliPHOSv0hits(const char *name, const char *title="") ; + virtual ~AliPHOSv0hits(void) ; + + virtual void AddHit( Int_t primary, Int_t id, Float_t *hits ) ; +// adds a hit to the hit tree (any pre=digitalization is done here (so large root file !!) + void FinishEvent(void) ; // makes the digits from the hits +protected: + + ClassDef(AliPHOSv0hits,1) // Class AliPHOSv0 which allows to write ond disk al the information of the hits. + +}; + +#endif // AliPHOSV0HITS_H -- 2.43.0