ROOT logo
#include "AliEmcalJetUtilityConstSubtractor.h"
#include "AliEmcalJet.h"
#include "AliRhoParameter.h"
#include "AliEmcalJetTask.h"

ClassImp(AliEmcalJetUtilityConstSubtractor)

//______________________________________________________________________________
AliEmcalJetUtilityConstSubtractor::AliEmcalJetUtilityConstSubtractor() :
  AliEmcalJetUtility(),
  fJetsSubName(""),
  fParticlesSubName(""),
  fUseExternalBkg(kFALSE),
  fRhoName(""),
  fRhomName(""),
  fRho(0),
  fRhom(0),
  fJetsSub(0x0),
  fParticlesSub(0x0),
  fRhoParam(0),
  fRhomParam(0)
{
  // Dummy constructor.

}

//______________________________________________________________________________
AliEmcalJetUtilityConstSubtractor::AliEmcalJetUtilityConstSubtractor(const char* name) :
  AliEmcalJetUtility(name),
  fJetsSubName(""),
  fParticlesSubName(""),
  fUseExternalBkg(kFALSE),
  fRhoName(""),
  fRhomName(""),
  fRho(0),
  fRhom(0),
  fJetsSub(0x0),
  fParticlesSub(0x0),
  fRhoParam(0),
  fRhomParam(0)
{
  // Default constructor.
}

//______________________________________________________________________________
AliEmcalJetUtilityConstSubtractor::AliEmcalJetUtilityConstSubtractor(const AliEmcalJetUtilityConstSubtractor &other) :
  AliEmcalJetUtility(other),
  fJetsSubName(other.fJetsSubName),
  fParticlesSubName(other.fParticlesSubName),
  fUseExternalBkg(other.fUseExternalBkg),
  fRhoName(other.fRhoName),
  fRhomName(other.fRhomName),
  fRho(other.fRho),
  fRhom(other.fRhom),
  fJetsSub(other.fJetsSub),
  fParticlesSub(other.fParticlesSub),
  fRhoParam(other.fRhoParam),
  fRhomParam(other.fRhomParam)
{
  // Copy constructor.
}

//______________________________________________________________________________
AliEmcalJetUtilityConstSubtractor& AliEmcalJetUtilityConstSubtractor::operator=(const AliEmcalJetUtilityConstSubtractor &other)
{
  // Assignment.

  if (&other == this) return *this;
  AliEmcalJetUtility::operator=(other);
  fJetsSubName = other.fJetsSubName;
  fParticlesSubName = other.fParticlesSubName;
  fUseExternalBkg = other.fUseExternalBkg;
  fRhoName = other.fRhoName;
  fRhomName = other.fRhomName;
  fRho = other.fRho;
  fRhom = other.fRhom;
  fJetsSub = other.fJetsSub;
  fParticlesSub = other.fParticlesSub;
  fRhoParam = other.fRhoParam;
  fRhomParam = other.fRhomParam;
  return *this;
}

//______________________________________________________________________________
void AliEmcalJetUtilityConstSubtractor::Init()
{
  // Initialize the utility.

  // Add constituent subtracted jets to event
  if (!fJetsSubName.IsNull()) {
    if (!(fJetTask->GetEvent()->FindListObject(fJetsSubName)) ) {
      fJetsSub = new TClonesArray("AliEmcalJet");
      fJetsSub->SetName(fJetsSubName);
      fJetTask->GetEvent()->AddObject(fJetsSub);
    } 
    else {
      AliError(Form("%s: Object for subtracted jet branch with name %s already in event! Returning", GetName(), fJetsSubName.Data()));
      return;
    }
  }

  // Add tracks from constituent subtracted jets to event
  if (!fParticlesSubName.IsNull()) {
    if (!(fJetTask->GetEvent()->FindListObject(fParticlesSubName))) {
      fParticlesSub = new TClonesArray("AliEmcalParticle");
      fParticlesSub->SetName(fParticlesSubName);
      fJetTask->GetEvent()->AddObject(fParticlesSub);
    } else {
      AliError(Form("%s: Object with name %s already in event! Returning", GetName(), fParticlesSubName.Data()));
      return;
    }
  }

  if (!fRhoName.IsNull() && !fRhoParam) { // get rho from the event
    fRhoParam = dynamic_cast<AliRhoParameter*>(fJetTask->GetEvent()->FindListObject(fRhoName));
    if (!fRhoParam) {
      AliError(Form("%s: Could not retrieve rho %s!", GetName(), fRhoName.Data()));
      return;
    }
  }

  if (!fRhomName.IsNull() && !fRhomParam) { // get rhom from the event
    fRhomParam = dynamic_cast<AliRhoParameter*>(fJetTask->GetEvent()->FindListObject(fRhomName));
    if (!fRhomParam) {
      AliError(Form("%s: Could not retrieve rho_m %s!", GetName(), fRhomName.Data()));
      return;
    }
  }

  fInit = kTRUE;
}

//______________________________________________________________________________
void AliEmcalJetUtilityConstSubtractor::Prepare(AliFJWrapper& fjw)
{
  // Prepare the utility.

  if (!fInit) return;

  if (fRhoParam) fRho = fRhoParam->GetVal();
  if (fRhomParam) fRhom = fRhomParam->GetVal();

  if (fJetsSub) fJetsSub->Delete();

  fjw.SetUseExternalBkg(fUseExternalBkg, fRho, fRhom);
  fjw.DoConstituentSubtraction();
}

//______________________________________________________________________________
void AliEmcalJetUtilityConstSubtractor::ProcessJet(AliEmcalJet* /*jet*/, Int_t /*ij*/, AliFJWrapper& /*fjw*/)
{
  // Proceess each jet.
}

//______________________________________________________________________________
void AliEmcalJetUtilityConstSubtractor::Terminate(AliFJWrapper& fjw)
{
  // Run termination of the utility (after each event).

  if (!fInit) return;

  if (!fJetsSub) {
    AliWarning(Form("No jet branch to write to for subtracted jets. fJetsSubName: %s", fJetsSubName.Data()));
    return;
  }

#ifdef FASTJET_VERSION
  std::vector<fastjet::PseudoJet> jets_sub;
  jets_sub = fjw.GetConstituentSubtrJets();
  AliDebug(1,Form("%d constituent subtracted jets found", (Int_t)jets_sub.size()));
  for (UInt_t ijet = 0, jetCount = 0; ijet < jets_sub.size(); ++ijet) {
    //Only storing 4-vector and jet area of unsubtracted jet
    AliEmcalJet *jet_sub = new ((*fJetsSub)[jetCount])
      AliEmcalJet(jets_sub[ijet].perp(), jets_sub[ijet].eta(), jets_sub[ijet].phi(), jets_sub[ijet].m());
    jet_sub->SetLabel(ijet);

    fastjet::PseudoJet area(fjw.GetJetAreaVector(ijet));
    jet_sub->SetArea(area.perp());
    jet_sub->SetAreaEta(area.eta());
    jet_sub->SetAreaPhi(area.phi());
    jet_sub->SetAreaEmc(area.perp());

    // Fill constituent info
    std::vector<fastjet::PseudoJet> constituents_unsub(fjw.GetJetConstituents(ijet));
    std::vector<fastjet::PseudoJet> constituents_sub = jets_sub[ijet].constituents();
    jet_sub->SetNumberOfTracks(constituents_sub.size());
    fJetTask->FillJetConstituents(jet_sub, constituents_sub, fJetTask->GetTracks(), fJetTask->GetClusters(), constituents_unsub, 1, fParticlesSub);

    jetCount++;
  }

#endif

}

 AliEmcalJetUtilityConstSubtractor.cxx:1
 AliEmcalJetUtilityConstSubtractor.cxx:2
 AliEmcalJetUtilityConstSubtractor.cxx:3
 AliEmcalJetUtilityConstSubtractor.cxx:4
 AliEmcalJetUtilityConstSubtractor.cxx:5
 AliEmcalJetUtilityConstSubtractor.cxx:6
 AliEmcalJetUtilityConstSubtractor.cxx:7
 AliEmcalJetUtilityConstSubtractor.cxx:8
 AliEmcalJetUtilityConstSubtractor.cxx:9
 AliEmcalJetUtilityConstSubtractor.cxx:10
 AliEmcalJetUtilityConstSubtractor.cxx:11
 AliEmcalJetUtilityConstSubtractor.cxx:12
 AliEmcalJetUtilityConstSubtractor.cxx:13
 AliEmcalJetUtilityConstSubtractor.cxx:14
 AliEmcalJetUtilityConstSubtractor.cxx:15
 AliEmcalJetUtilityConstSubtractor.cxx:16
 AliEmcalJetUtilityConstSubtractor.cxx:17
 AliEmcalJetUtilityConstSubtractor.cxx:18
 AliEmcalJetUtilityConstSubtractor.cxx:19
 AliEmcalJetUtilityConstSubtractor.cxx:20
 AliEmcalJetUtilityConstSubtractor.cxx:21
 AliEmcalJetUtilityConstSubtractor.cxx:22
 AliEmcalJetUtilityConstSubtractor.cxx:23
 AliEmcalJetUtilityConstSubtractor.cxx:24
 AliEmcalJetUtilityConstSubtractor.cxx:25
 AliEmcalJetUtilityConstSubtractor.cxx:26
 AliEmcalJetUtilityConstSubtractor.cxx:27
 AliEmcalJetUtilityConstSubtractor.cxx:28
 AliEmcalJetUtilityConstSubtractor.cxx:29
 AliEmcalJetUtilityConstSubtractor.cxx:30
 AliEmcalJetUtilityConstSubtractor.cxx:31
 AliEmcalJetUtilityConstSubtractor.cxx:32
 AliEmcalJetUtilityConstSubtractor.cxx:33
 AliEmcalJetUtilityConstSubtractor.cxx:34
 AliEmcalJetUtilityConstSubtractor.cxx:35
 AliEmcalJetUtilityConstSubtractor.cxx:36
 AliEmcalJetUtilityConstSubtractor.cxx:37
 AliEmcalJetUtilityConstSubtractor.cxx:38
 AliEmcalJetUtilityConstSubtractor.cxx:39
 AliEmcalJetUtilityConstSubtractor.cxx:40
 AliEmcalJetUtilityConstSubtractor.cxx:41
 AliEmcalJetUtilityConstSubtractor.cxx:42
 AliEmcalJetUtilityConstSubtractor.cxx:43
 AliEmcalJetUtilityConstSubtractor.cxx:44
 AliEmcalJetUtilityConstSubtractor.cxx:45
 AliEmcalJetUtilityConstSubtractor.cxx:46
 AliEmcalJetUtilityConstSubtractor.cxx:47
 AliEmcalJetUtilityConstSubtractor.cxx:48
 AliEmcalJetUtilityConstSubtractor.cxx:49
 AliEmcalJetUtilityConstSubtractor.cxx:50
 AliEmcalJetUtilityConstSubtractor.cxx:51
 AliEmcalJetUtilityConstSubtractor.cxx:52
 AliEmcalJetUtilityConstSubtractor.cxx:53
 AliEmcalJetUtilityConstSubtractor.cxx:54
 AliEmcalJetUtilityConstSubtractor.cxx:55
 AliEmcalJetUtilityConstSubtractor.cxx:56
 AliEmcalJetUtilityConstSubtractor.cxx:57
 AliEmcalJetUtilityConstSubtractor.cxx:58
 AliEmcalJetUtilityConstSubtractor.cxx:59
 AliEmcalJetUtilityConstSubtractor.cxx:60
 AliEmcalJetUtilityConstSubtractor.cxx:61
 AliEmcalJetUtilityConstSubtractor.cxx:62
 AliEmcalJetUtilityConstSubtractor.cxx:63
 AliEmcalJetUtilityConstSubtractor.cxx:64
 AliEmcalJetUtilityConstSubtractor.cxx:65
 AliEmcalJetUtilityConstSubtractor.cxx:66
 AliEmcalJetUtilityConstSubtractor.cxx:67
 AliEmcalJetUtilityConstSubtractor.cxx:68
 AliEmcalJetUtilityConstSubtractor.cxx:69
 AliEmcalJetUtilityConstSubtractor.cxx:70
 AliEmcalJetUtilityConstSubtractor.cxx:71
 AliEmcalJetUtilityConstSubtractor.cxx:72
 AliEmcalJetUtilityConstSubtractor.cxx:73
 AliEmcalJetUtilityConstSubtractor.cxx:74
 AliEmcalJetUtilityConstSubtractor.cxx:75
 AliEmcalJetUtilityConstSubtractor.cxx:76
 AliEmcalJetUtilityConstSubtractor.cxx:77
 AliEmcalJetUtilityConstSubtractor.cxx:78
 AliEmcalJetUtilityConstSubtractor.cxx:79
 AliEmcalJetUtilityConstSubtractor.cxx:80
 AliEmcalJetUtilityConstSubtractor.cxx:81
 AliEmcalJetUtilityConstSubtractor.cxx:82
 AliEmcalJetUtilityConstSubtractor.cxx:83
 AliEmcalJetUtilityConstSubtractor.cxx:84
 AliEmcalJetUtilityConstSubtractor.cxx:85
 AliEmcalJetUtilityConstSubtractor.cxx:86
 AliEmcalJetUtilityConstSubtractor.cxx:87
 AliEmcalJetUtilityConstSubtractor.cxx:88
 AliEmcalJetUtilityConstSubtractor.cxx:89
 AliEmcalJetUtilityConstSubtractor.cxx:90
 AliEmcalJetUtilityConstSubtractor.cxx:91
 AliEmcalJetUtilityConstSubtractor.cxx:92
 AliEmcalJetUtilityConstSubtractor.cxx:93
 AliEmcalJetUtilityConstSubtractor.cxx:94
 AliEmcalJetUtilityConstSubtractor.cxx:95
 AliEmcalJetUtilityConstSubtractor.cxx:96
 AliEmcalJetUtilityConstSubtractor.cxx:97
 AliEmcalJetUtilityConstSubtractor.cxx:98
 AliEmcalJetUtilityConstSubtractor.cxx:99
 AliEmcalJetUtilityConstSubtractor.cxx:100
 AliEmcalJetUtilityConstSubtractor.cxx:101
 AliEmcalJetUtilityConstSubtractor.cxx:102
 AliEmcalJetUtilityConstSubtractor.cxx:103
 AliEmcalJetUtilityConstSubtractor.cxx:104
 AliEmcalJetUtilityConstSubtractor.cxx:105
 AliEmcalJetUtilityConstSubtractor.cxx:106
 AliEmcalJetUtilityConstSubtractor.cxx:107
 AliEmcalJetUtilityConstSubtractor.cxx:108
 AliEmcalJetUtilityConstSubtractor.cxx:109
 AliEmcalJetUtilityConstSubtractor.cxx:110
 AliEmcalJetUtilityConstSubtractor.cxx:111
 AliEmcalJetUtilityConstSubtractor.cxx:112
 AliEmcalJetUtilityConstSubtractor.cxx:113
 AliEmcalJetUtilityConstSubtractor.cxx:114
 AliEmcalJetUtilityConstSubtractor.cxx:115
 AliEmcalJetUtilityConstSubtractor.cxx:116
 AliEmcalJetUtilityConstSubtractor.cxx:117
 AliEmcalJetUtilityConstSubtractor.cxx:118
 AliEmcalJetUtilityConstSubtractor.cxx:119
 AliEmcalJetUtilityConstSubtractor.cxx:120
 AliEmcalJetUtilityConstSubtractor.cxx:121
 AliEmcalJetUtilityConstSubtractor.cxx:122
 AliEmcalJetUtilityConstSubtractor.cxx:123
 AliEmcalJetUtilityConstSubtractor.cxx:124
 AliEmcalJetUtilityConstSubtractor.cxx:125
 AliEmcalJetUtilityConstSubtractor.cxx:126
 AliEmcalJetUtilityConstSubtractor.cxx:127
 AliEmcalJetUtilityConstSubtractor.cxx:128
 AliEmcalJetUtilityConstSubtractor.cxx:129
 AliEmcalJetUtilityConstSubtractor.cxx:130
 AliEmcalJetUtilityConstSubtractor.cxx:131
 AliEmcalJetUtilityConstSubtractor.cxx:132
 AliEmcalJetUtilityConstSubtractor.cxx:133
 AliEmcalJetUtilityConstSubtractor.cxx:134
 AliEmcalJetUtilityConstSubtractor.cxx:135
 AliEmcalJetUtilityConstSubtractor.cxx:136
 AliEmcalJetUtilityConstSubtractor.cxx:137
 AliEmcalJetUtilityConstSubtractor.cxx:138
 AliEmcalJetUtilityConstSubtractor.cxx:139
 AliEmcalJetUtilityConstSubtractor.cxx:140
 AliEmcalJetUtilityConstSubtractor.cxx:141
 AliEmcalJetUtilityConstSubtractor.cxx:142
 AliEmcalJetUtilityConstSubtractor.cxx:143
 AliEmcalJetUtilityConstSubtractor.cxx:144
 AliEmcalJetUtilityConstSubtractor.cxx:145
 AliEmcalJetUtilityConstSubtractor.cxx:146
 AliEmcalJetUtilityConstSubtractor.cxx:147
 AliEmcalJetUtilityConstSubtractor.cxx:148
 AliEmcalJetUtilityConstSubtractor.cxx:149
 AliEmcalJetUtilityConstSubtractor.cxx:150
 AliEmcalJetUtilityConstSubtractor.cxx:151
 AliEmcalJetUtilityConstSubtractor.cxx:152
 AliEmcalJetUtilityConstSubtractor.cxx:153
 AliEmcalJetUtilityConstSubtractor.cxx:154
 AliEmcalJetUtilityConstSubtractor.cxx:155
 AliEmcalJetUtilityConstSubtractor.cxx:156
 AliEmcalJetUtilityConstSubtractor.cxx:157
 AliEmcalJetUtilityConstSubtractor.cxx:158
 AliEmcalJetUtilityConstSubtractor.cxx:159
 AliEmcalJetUtilityConstSubtractor.cxx:160
 AliEmcalJetUtilityConstSubtractor.cxx:161
 AliEmcalJetUtilityConstSubtractor.cxx:162
 AliEmcalJetUtilityConstSubtractor.cxx:163
 AliEmcalJetUtilityConstSubtractor.cxx:164
 AliEmcalJetUtilityConstSubtractor.cxx:165
 AliEmcalJetUtilityConstSubtractor.cxx:166
 AliEmcalJetUtilityConstSubtractor.cxx:167
 AliEmcalJetUtilityConstSubtractor.cxx:168
 AliEmcalJetUtilityConstSubtractor.cxx:169
 AliEmcalJetUtilityConstSubtractor.cxx:170
 AliEmcalJetUtilityConstSubtractor.cxx:171
 AliEmcalJetUtilityConstSubtractor.cxx:172
 AliEmcalJetUtilityConstSubtractor.cxx:173
 AliEmcalJetUtilityConstSubtractor.cxx:174
 AliEmcalJetUtilityConstSubtractor.cxx:175
 AliEmcalJetUtilityConstSubtractor.cxx:176
 AliEmcalJetUtilityConstSubtractor.cxx:177
 AliEmcalJetUtilityConstSubtractor.cxx:178
 AliEmcalJetUtilityConstSubtractor.cxx:179
 AliEmcalJetUtilityConstSubtractor.cxx:180
 AliEmcalJetUtilityConstSubtractor.cxx:181
 AliEmcalJetUtilityConstSubtractor.cxx:182
 AliEmcalJetUtilityConstSubtractor.cxx:183
 AliEmcalJetUtilityConstSubtractor.cxx:184
 AliEmcalJetUtilityConstSubtractor.cxx:185
 AliEmcalJetUtilityConstSubtractor.cxx:186
 AliEmcalJetUtilityConstSubtractor.cxx:187
 AliEmcalJetUtilityConstSubtractor.cxx:188
 AliEmcalJetUtilityConstSubtractor.cxx:189
 AliEmcalJetUtilityConstSubtractor.cxx:190
 AliEmcalJetUtilityConstSubtractor.cxx:191
 AliEmcalJetUtilityConstSubtractor.cxx:192
 AliEmcalJetUtilityConstSubtractor.cxx:193
 AliEmcalJetUtilityConstSubtractor.cxx:194
 AliEmcalJetUtilityConstSubtractor.cxx:195