1 #ifndef ALIANALYSISTASKEMCALJETCDF_H 2 #define ALIANALYSISTASKEMCALJETCDF_H 21 #include "AliAnalysisManager.h" 80 namespace EMCALJetTasks {
81 namespace AliAnalysisTaskEmcalJetCDF_NS {
89 bool operator () (
const ptidx_pair &p1,
const ptidx_pair &p2 ) {
return p1.first > p2.first ; }
96 {
return trk.Px()*trk.Px() + trk.Py()*trk.Py() + trk.Pz()*trk.Pz(); }
107 inline Double_t Dot (
const AliVParticle& trk1,
const AliVParticle& trk2 )
108 {
return trk1.Px()*trk2.Px() + trk1.Py()*trk2.Py() + trk1.Pz()*trk2.Pz(); }
114 inline Double_t Perp2(
const AliVParticle& trk1,
const AliVParticle& trk2) {
118 if (mag2 > 0.0) { mag1 -= dotp*dotp/mag2; }
119 if (mag1 <= 0) { mag1 = 0; }
127 inline Double_t Perp (
const AliVParticle& trk1,
const AliVParticle& trk2 ) {
return TMath::Sqrt(
Perp2(trk1,trk2)); }
145 if (trk->P() < 1e-6)
return 0.;
146 return (trk != 0) ? trk->P()/ jet->
P() : 0.;
155 if (trk->P() < 1e-6)
return 0.;
156 return (trk != 0) ? trk->Pt() / jet->
Pt() : 0.;
169 Double_t dPhi = part1->Phi() - part2->Phi();
170 Double_t dEta = part1->Eta() - part2->Eta();
171 dPhi = TVector2::Phi_mpi_pi ( dPhi );
172 return TMath::Sqrt ( dPhi * dPhi + dEta * dEta );
181 for (
Int_t i = 0; i < array.GetSize(); i++ ) {
if ( index == array[i] ) {
return i; } }
192 const char* ntracks =
"usedefault",
193 const char* nclusters =
"usedefault",
194 const char* ncells =
"usedefault",
195 const char* ntracks_mc =
"",
196 const char* tag =
"CDF" 214 Int_t leadhadtype = 2,
234 const char* cTreeNameArg =
"auto",
235 const char* friends =
"",
247 if (!period.IsNull()) {
249 if ( period.BeginsWith(
"lhc") && (period.Length() > 6) ) {
return true; }
263 if (!sFile.IsNull()) {
265 TObjArray* tokens_list = sFile.Tokenize(
"/");
266 tokens_list->SetOwner(kTRUE);
267 TIter next_str(tokens_list);
268 TObjString* token = NULL;
269 while ((token=(TObjString*)next_str())) {
270 TString token_str = token->GetString();
271 if ( token_str.BeginsWith(
"lhc") ) { period = token_str;
break; }
287 if (!sFile.IsNull()) {
289 TObjArray* tokens_list = sFile.Tokenize(
"/");
290 tokens_list->SetOwner(kTRUE);
291 TIter next_str(tokens_list);
292 TObjString* token = NULL;
293 while ((token=(TObjString*)next_str())) {
294 TString token_str = token->GetString();
295 if ( token_str.BeginsWith(
"pass") ) { pass = token_str;
break; }
310 TObjArray* token_list = file.Tokenize(
"/");
311 token_list->SetOwner(kTRUE);
313 if ( token_list->GetEntries() > 0 )
314 { file_name = ((TObjString*)token_list->At(token_list->GetLast()))->GetString(); }
326 if ( !mgr ) { ::Error (
"SaveManager",
"No analysis manager to connect to." );
return kFALSE; }
328 TFile pOutFile (file_name,
"RECREATE");
329 if ( ! pOutFile.cd() ) { ::Error (
"SaveManager",
"Could not use the new created file" );
return kFALSE; }
330 Int_t written_bytes = mgr->Write();
332 if (written_bytes == 0 ) { ::Error (
"SaveManager",
"0 bytes written saving manager to file" );
return kFALSE; }
341 return jet->
Pt() - jet->
Area() * rho;
349 #endif // end of #ifndef ALIANALYSISTASKEMCALJETCDF_H std::vector< Int_t > SortTracksPt(AliParticleContainer *track_container)
Bool_t fUseManualEventCuts
Flag to use manual event cuts.
AliAnalysisTaskEmcalJetCDF()
THistManager fHistManager
Histogram manager.
Bool_t fUseAliEventCuts
Flag to use AliEventCuts (otherwise AliAnalysisTaskEmcal will be used)
Bool_t IsEventSelected()
Performing event selection.
std::pair< Double_t, Int_t > ptidx_pair
(pt,index) pair
void ExecOnce()
Perform steps needed to initialize the analysis.
TString GetPeriod(const char *file_path)
Container for particles within the EMCAL framework.
QA Class for EMCal Embedding Framework.
void Terminate(Option_t *option)
void UserCreateOutputObjects()
Double_t Z_ptot(const AliEmcalJet *jet, const AliVParticle *trk)
bool PeriodIsMC(const char *str)
Double_t Perp2(const AliVParticle &trk1, const AliVParticle &trk2)
Double_t DeltaR(const AliVParticle *part1, const AliVParticle *part2)
TObject * GetHistogram(const char *histName)
Double_t JetPtRho(const AliEmcalJet *jet, Double_t rho)
Double_t Z_pt(const AliEmcalJet *jet, const AliVParticle *trk)
AliEventCuts fEventCuts
event selection utility
functional for sorting pair by first element - descending
TString GetFileFromPath(const char *file_path="")
Double_t Perp(const AliVParticle &trk1, const AliVParticle &trk2)
bool SaveManager(const char *file_name)
Double_t Mag2(const AliVParticle &trk)
AliJetContainer * jetContSetParams(AliJetContainer *jetCont, Float_t jetptmin=1., Float_t jetptmax=500., Float_t jetareacutperc=0., Int_t leadhadtype=2, Int_t nLeadJets=1, Float_t mintrackpt=0.15, Float_t maxtrackpt=1000.)
AliMCParticleContainer * fGeneratorLevel
! generator level container
virtual ~AliAnalysisTaskEmcalJetCDF()
Destructor.
AliAnalysisTaskEmcalJetCDF * AddTaskEmcalJetCDF(const char *ntracks="usedefault", const char *nclusters="usedefault", const char *ncells="usedefault", const char *ntracks_mc="", const char *tag="CDF")
TFile * file
TList with histograms for a given trigger.
Base task in the EMCAL jet framework.
Represent a jet reconstructed using the EMCal jet framework.
Container class for histograms.
Double_t Mag(const AliVParticle &trk)
AliEmcalEmbeddingQA fEmbeddingQA
! QA hists for embedding (will only be added if embedding)
TChain * CreateChain(const char *filelist="filelist.txt", const char *cTreeNameArg="auto", const char *friends="", UInt_t iNumFiles=-1, UInt_t iStartWithFile=1)
Int_t IdxInArray(Int_t index, TArrayI &array)
Double_t Dot(const AliVParticle &trk1, const AliVParticle &trk2)
AliAnalysisTaskEmcalJetCDF & operator=(const AliAnalysisTaskEmcalJetCDF &)
TString GetPass(const char *file_path)
Container for MC-true particles within the EMCAL framework.
Container for jet within the EMCAL jet framework.
Analysis of jet shapes and FF of all jets and leading jets.
TList * fEventCutList
! Output list for event cut histograms