on the fly, the field does not need to be streamed (commented with //!), so it will not increase the size on disk.
Salvatore Aiola <salvatore.aiola@cern.ch>
if (fDoUpdateCells)
UpdateCells();
- if (!fDoClusterize || (!fAttachClusters && !fOutputAODBranch))
+ if (!fDoClusterize || (!fAttachClusters && !fOutputAODBranch) || !fCaloClusters)
return;
UpdateClusters();
CalibrateClusters();
- if (fCaloClusters && fOutputAODBranch && fCaloClusters != fOutputAODBranch)
+ if (fOutputAODBranch && fCaloClusters != fOutputAODBranch)
CopyClusters(fCaloClusters, fOutputAODBranch);
}
dc->SetM02(oc->GetM02());
dc->SetM20(oc->GetM20());
dc->SetDistanceToBadChannel(oc->GetDistanceToBadChannel());
+ dc->SetMCEnergyFraction(oc->GetMCEnergyFraction());
//MC
UInt_t nlabels = oc->GetNLabels();
Double32_t ratios[ncells];
Int_t *dlist = recpoint->GetDigitsList();
Float_t *elist = recpoint->GetEnergiesList();
+ Double_t mcEnergy = 0;
for (Int_t c = 0; c < ncells; ++c) {
AliEMCALDigit *digit = static_cast<AliEMCALDigit*>(fDigitsArr->At(dlist[c]));
absIds[ncells_true] = digit->GetId();
ratios[ncells_true] = elist[c]/recpoint->GetEnergy();
+ if (digit->GetIparent(1) > 0)
+ mcEnergy += digit->GetDEParent(1)/recpoint->GetEnergy();
++ncells_true;
}
recpoint->GetElipsAxis(elipAxis);
c->SetM02(elipAxis[0]*elipAxis[0]);
c->SetM20(elipAxis[1]*elipAxis[1]);
- // Now it is done in CalibrateClusters()
- /*
- if (fPedestalData) {
- c->SetDistanceToBadChannel(recpoint->GetDistanceToBadTower());
- } else {
- if (fRecoUtils && fRecoUtils->IsBadChannelsRemovalSwitchedOn()) {
- fRecoUtils->RecalculateClusterDistanceToBadChannel(fGeom, fCaloCells, c);
- }
- }
- */
+ c->SetMCEnergyFraction(mcEnergy);
//MC
AliESDCaloCluster *esdClus = dynamic_cast<AliESDCaloCluster*>(c);
maxNe = cPt;
if (c->GetLabel() > fMinMCLabel) // MC particle
- mcpt += cPt;
+ mcpt += cPt * c->GetMCEnergyFraction();
if (cPhi<0)
cPhi += TMath::TwoPi();
fNLabel(0),
fLabel(0x0),
fFilterMap(0),
- fType(kUndef)
+ fType(kUndef),
+ fMCEnergyFraction(0.)
{
// default constructor
fNLabel(0),
fLabel(0x0),
fFilterMap(selectInfo),
- fType(ttype)
+ fType(ttype),
+ fMCEnergyFraction(0.)
{
// constructor
for (Int_t i = 0; i < 3; i++) fPosition[i] = 0.;
fNLabel(0),
fLabel(0x0),
fFilterMap(selectInfo),
- fType(ttype)
+ fType(ttype),
+ fMCEnergyFraction(0.)
{
// constructor
for (Int_t i = 0; i < 3; i++) fPosition[i] = 0.;
fNLabel(0),
fLabel(0x0),
fFilterMap(clus.fFilterMap),
- fType(clus.fType)
+ fType(clus.fType),
+ fMCEnergyFraction(clus.fMCEnergyFraction)
{
// Copy constructor
fFilterMap = clus.fFilterMap;
fType = clus.fType;
+
+ fMCEnergyFraction = clus.fMCEnergyFraction;
}
return *this;
else {for(Int_t i=0; i<13; fPID[i++]=0) ;} fPID[AliAODCluster::kUnknown]=1.;}
void RemoveLabel();
-
+
+ Double_t GetMCEnergyFraction() const { return fMCEnergyFraction ; }
+ void SetMCEnergyFraction(Double_t e) { fMCEnergyFraction = e ; }
private :
UInt_t fFilterMap; // filter information, one bit per set of cuts
Char_t fType; // cluster type
+
+ Double_t fMCEnergyFraction; //!MC energy (embedding)
ClassDef(AliAODCluster,6);
};
fDistToBadChannel(1024),
fID(0),
fNExMax(0),
- fClusterType(kUndef), fTOF(0.)
+ fClusterType(kUndef),
+ fTOF(0.),
+ fMCEnergyFraction(0.)
{
//
// The default ESD constructor
fID(clus.fID),
fNExMax(clus.fNExMax),
fClusterType(clus.fClusterType),
- fTOF(clus.fTOF)
+ fTOF(clus.fTOF),
+ fMCEnergyFraction(0.)
{
//
// The copy constructor
fLabels = 0;
}
+ fMCEnergyFraction = source.fMCEnergyFraction;
return *this;
Double_t GetCellAmplitudeFraction(Int_t i) const {
if (fCellsAmpFraction && i >=0 && i < fNCells ) return fCellsAmpFraction[i];
else return -1;}
+
+ Double_t GetMCEnergyFraction() const { return fMCEnergyFraction ; }
+ void SetMCEnergyFraction(Double_t e) { fMCEnergyFraction = e ; }
protected:
Char_t fClusterType; // Flag for different cluster type/versions
Double_t fTOF; //[0,0,12] time-of-flight
+ Double_t fMCEnergyFraction; //!MC energy (embedding)
ClassDef(AliESDCaloCluster,11) //ESDCaloCluster
virtual Int_t GetNTracksMatched() const {return 0 ; }
virtual TObject *GetTrackMatched(Int_t) const {return 0 ; }//AODCaloCluster
virtual Int_t GetTrackMatchedIndex() const {return -1; }//ESDCaloCluster
+
+ virtual Double_t GetMCEnergyFraction() const {return 0 ; }
+ virtual void SetMCEnergyFraction(Double_t) { ; }
virtual void GetMomentum(TLorentzVector &/*tl*/, Double_t * /*v*/) { ; }