17 #include <TClonesArray.h> 29 #include "AliVCaloCells.h" 30 #include "AliMCEvent.h" 31 #include "AliAODEvent.h" 32 #include "AliAODHandler.h" 45 fNModules(20), fNRCU(2),
46 fFirstModule(0), fLastModule(19),
47 fNMaxCols(48), fNMaxRows(24),
48 fNMaxColsFull(48), fNMaxRowsFull(24),
49 fNMaxRowsFullMin(0), fNMaxRowsFullMax(24),
50 fDataMC(0), fDebug(0),
51 fCalorimeter(-1), fCalorimeterString(
""),
52 fCheckFidCut(0), fCheckRealCaloAcc(0),
53 fCheckCaloPID(0), fRecalculateCaloPID(0),
55 fPairTimeCut(200), fTRDSMCovered(-1),
56 fNZvertBin(0), fNrpBin(0),
57 fNCentrBin(0), fNmaxMixEv(0),
58 fDoOwnMix(0), fUseTrackMultBins(0),
59 fFillPileUpHistograms(0), fFillHighMultHistograms(0),
61 fInputAODBranch(0x0), fInputAODName(
""),
62 fOutputAODBranch(0x0), fNewAOD(kFALSE),
63 fOutputAODName(
""), fOutputAODClassName(
""),
64 fAODObjArrayName(
""), fAddToHistogramsName(
""),
65 fCaloPID(0x0), fCaloUtils(0x0),
66 fFidCut(0x0), fHisto(0x0),
67 fIC(0x0), fMCUtils(0x0),
68 fNMS(0x0), fReader(0x0),
69 fStudyClusterOverlapsPerGenerator(0),
99 AliFatal(
"No AOD branch available!!!\n");
105 if (strcmp(
fOutputAODBranch->GetClass()->GetName(),
"AliCaloTrackParticle")==0)
109 else if(strcmp(
fOutputAODBranch->GetClass()->GetName(),
"AliCaloTrackParticleCorrelation")==0)
115 AliFatal(Form(
"Cannot add an object of type < %s >, to the AOD TClonesArray \n",
fOutputAODBranch->GetClass()->GetName()));
135 else if(trackLabel >= 0 )
156 AliDebug(3,Form(
"AliAnaCaloTrackCorrBaseClass::ConnectInputOutputAODBranches() - Connect Input with name: <%s>; Connect output with name <%s>\n",
fInputAODName.Data(),
fOutputAODName.Data()));
159 AliAODHandler* aodHandler = 0x0;
161 if((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler()) outAOD = kTRUE;
162 if(outAOD) aodHandler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
163 else aodHandler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
170 else if (aodHandler->GetExtensions())
172 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
GetReader()->GetDeltaAODFileName());
232 if ( !clusters )
return 0x0;
234 for(iclus = first; iclus < clusters->GetEntriesFast(); iclus++)
236 AliVCluster *cluster=
dynamic_cast<AliVCluster*
> (clusters->At(iclus));
239 if ( cluster->GetID() == clId )
254 AliDebug(3,Form(
"AliAnaCaloTrackCorrBaseClass::GetAODBranch() - Get Input Branch with name: <%s>; \n",aodName.Data()));
257 AliAODHandler* aodHandler = 0x0;
259 if((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler()) outAOD = kTRUE;
260 if(outAOD) aodHandler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
261 else aodHandler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
267 else if (aodHandler->GetExtensions())
269 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
GetReader()->GetDeltaAODFileName());
272 TClonesArray * aodbranch = (TClonesArray*) aodEvent->FindListObject(aodName);
273 if(aodbranch)
return aodbranch;
337 const Int_t buffersize = 255;
338 char onePar[buffersize] ;
339 snprintf(onePar,buffersize,
"--- AliAnaCaloTrackCorrBaseClass ---\n") ;
341 snprintf(onePar,buffersize,
"Minimal P_t: %2.2f ; Max\n",
fMinPt) ;
343 snprintf(onePar,buffersize,
"Minimal P_t: %2.2f ; Max\n",
fMaxPt) ;
345 snprintf(onePar,buffersize,
"|t_{1}-t_{2}| < %2.2f ; Max\n",
fPairTimeCut) ;
347 snprintf(onePar,buffersize,
"fDataMC =%d (Check MC information, on/off) \n",
fDataMC) ;
349 snprintf(onePar,buffersize,
"fCheckFidCut=%d (Check Fiducial cut selection on/off) \n",
fCheckFidCut) ;
351 snprintf(onePar,buffersize,
"fCheckRealCaloAcc=%d (Check Real Calo Acceptance on/off) \n",
fCheckRealCaloAcc) ;
353 snprintf(onePar,buffersize,
"fCheckCaloPID =%d (Use Bayesian PID in calorimetes, on/off) \n",
fCheckCaloPID) ;
355 snprintf(onePar,buffersize,
"fRecalculateCaloPID =%d (Calculate PID from shower/tof/tracking parameters, on/off) \n",
fRecalculateCaloPID) ;
357 snprintf(onePar,buffersize,
"fInputAODName =%s Input AOD name \n",
fInputAODName.Data()) ;
361 snprintf(onePar,buffersize,
"fOutputAODName =%s Output AOD name \n",
fOutputAODName.Data()) ;
363 snprintf(onePar,buffersize,
"fOutputAODClassName =%s Output AOD class name \n",
fOutputAODClassName.Data()) ;
366 snprintf(onePar,buffersize,
"fAODObjArrayName =%s Reference arrays in AOD name \n",
fAODObjArrayName.Data()) ;
368 snprintf(onePar,buffersize,
"fAddToHistogramsName =%s String added to beginning of histograms name \n",
fAddToHistogramsName.Data()) ;
390 if(cluster->GetNLabels() == 0 || cluster->GetLabel() < 0 )
return -1;
399 Bool_t overlapGener = kFALSE;
400 Bool_t overlapGenerHIJING = kFALSE;
401 Bool_t overlapGenerOther = kFALSE;
406 const UInt_t nlabels = cluster->GetNLabels();
409 for(
UInt_t ilabel = 1; ilabel < nlabels; ilabel++)
411 Int_t label2 = cluster->GetLabels()[ilabel];
418 if(genName2 != genName)
422 if(!genNameBkg.Contains(genName2) && indexBkg != index2)
424 genNameBkg = Form(
"%s_%s",genNameBkg.Data(), genName2.Data());
428 overlapGener = kTRUE;
430 if( genName2.Contains(
"ijing") && !genName.Contains(
"ijing"))
431 overlapGenerHIJING = kTRUE;
433 if(!genName2.Contains(
"ijing"))
434 overlapGenerOther = kTRUE;
438 Int_t genBkgTag = -1;
440 if ( !overlapGener ) genBkgTag = 0;
441 else if ( overlapGenerHIJING && !overlapGenerOther) genBkgTag = 1;
442 else if ( !overlapGenerHIJING && overlapGenerOther) genBkgTag = 2;
443 else if ( overlapGenerHIJING && overlapGenerOther) genBkgTag = 3;
447 Int_t overpdg[nlabels];
448 Int_t overlab[nlabels];
450 Bool_t sameGenOverlap = kFALSE;
451 Bool_t sameGenOverlapHI = kFALSE;
452 for(
Int_t iover = 0; iover < noverlaps; iover++)
458 if ( genName2==genName && index==index2)
460 if ( !genName.Contains(
"ijing") ) sameGenOverlap = kTRUE;
461 else sameGenOverlapHI = kTRUE;
468 if(genBkgTag == 0) genBkgTag = 2;
469 if(genBkgTag == 1) genBkgTag = 3;
473 if(genName.Contains(
"ijing"))
478 if(!overlapGener) genBkgTag = 1;
483 if(!overlapGener) genBkgTag = 0;
496 AliInfo(Form(
"Create AOD branch of %s objects and with name < %s >\n",
555 AliWarning(Form(
"Bin not found for track multiplicity %d",trackMult));
567 Int_t curCentrBin = 0;
578 if((minCent< 0 && maxCent< 0) || minCent>=maxCent)
593 AliDebug(1,Form(
"Current CentrBin %d, centrality %d, n bins %d, max bin from centrality %d",
611 if(epAngle < 0 || epAngle >TMath::Pi())
613 AliWarning(Form(
"Wrong event plane angle : %f \n",epAngle));
617 curRPBin = TMath::Nint(epAngle*(
GetNRPBin()-1)/TMath::Pi());
620 AliDebug(1,Form(
"Current RP bin %d, bin float %f, angle %f, n bins %d",
638 AliDebug(1,Form(
"AliAnaCaloTrackCorrBaseClass::GetEventVzBin() - %d, vz %2.2f, n bins %d",
649 if(iCen<0 || iVz < 0 || iRP < 0)
671 AliDebug(1,Form(
"Bins : cent %d, vz %d, RP %d, event %d/%d",
684 (AliAnalysisManager::GetAnalysisManager())->AddClassDebug(this->ClassName(),
fDebug);
742 for(
Int_t igen = 7; igen < 10; igen++)
745 for(
Int_t igen = 0; igen < 10; igen++)
778 if ( minPhi > 70 && maxPhi < 190)
783 else if( minPhi > 250 && maxPhi < 330)
856 AliDebug(1,Form(
"N SM %d, first SM %d, last SM %d, SM col-row (%d,%d), Full detector col-row (%d, %d), partial calo row min-max(%d,%d)",
871 printf(
"New AOD: = %d\n",
fNewAOD);
878 printf(
"Min Photon pT = %2.2f\n",
fMinPt) ;
879 printf(
"Max Photon pT = %3.2f\n",
fMaxPt) ;
884 printf(
"Check MC labels = %d\n",
fDataMC);
886 printf(
"Debug Level = %d\n",
fDebug);
903 else AliFatal(Form(
"Detector < %s > not known!", calo.Data()));
919 else AliFatal(Form(
"Detector < %d > not known!", calo));
virtual Bool_t IsFiducialCutOn() const
AliFiducialCut * fFidCut
Acceptance cuts detector dependent.
TString fOutputAODName
Name of output AOD branch.
virtual AliHeader * GetMCHeader() const
Int_t GetCocktailGeneratorBackgroundTag(AliVCluster *clus, Int_t mctag, TString &genName, Int_t &index, TString &genNameBkg, Int_t &indexBkg)
virtual AliMCEvent * GetMC() const
virtual ~AliAnaCaloTrackCorrBaseClass()
Destructor.
virtual TObjArray * GetCTSTracks() const
virtual void InitParameters()
Initialize the parameters of the analysis.
Int_t fNMaxColsFull
Number of EMCAL/PHOS columns full detector.
virtual Int_t GetCalorimeter() const
virtual void AddAODParticle(AliCaloTrackParticle part)
virtual AliHeader * GetHeader() const
Int_t fCocktailGenIndeces[10]
Array with indeces of generators to study.
Int_t fTrackMultBins[20]
Multiplicity bins limits. Number of bins set with SetNTrackMult() that calls SetNCentrBin().
Int_t GetLastSuperModuleUsed() const
Int_t fLastModule
Last EMCAL/PHOS module, set in CaloUtils or depending fidutial cuts.
Bool_t fCheckFidCut
Do analysis for clusters in defined region.
virtual void GetVertex(Double_t vertex[3]) const
virtual TObjArray * GetEMCALClusters() const
Bool_t WriteDeltaAODToFile() const
virtual AliVEvent * GetInputEvent() const
virtual void SetCalorimeter(TString &calo)
Set the calorimeter for the analysis. A string.
virtual Int_t GetNTrackMultBin() const
Number of bins in centrality.
virtual AliIsolationCut * GetIsolationCut()
virtual Float_t GetZvertexCut() const
Maximal number of events for mixin.
Int_t fNModules
Number of EMCAL/PHOS modules to use in analysis, set in CaloUtils.
virtual Double_t GetEventPlaneAngle() const
Bool_t fRecalculateCaloPID
Recalculate PID or use PID weights in calorimeters.
Float_t fPairTimeCut
Maximum difference between time of cluster pairs (ns).
AliHistogramRanges * fHisto
Histogram ranges container.
TArrayF * GetEMCALFidCutMaxPhiArray() const
Int_t fNMaxCols
Number of EMCAL/PHOS columns per SM.
virtual AliNeutralMesonSelection * GetNeutralMesonSelection()
virtual AliGenEventHeader * GetMCGenEventHeader() const
TString fInputAODName
Name of input AOD branch.
Int_t fFirstModule
First EMCAL/PHOS module, set in CaloUtils or depending fidutial cuts.
virtual Int_t GetEventCentrality() const
virtual AliGenEventHeader * GetGenEventHeader() const
virtual Int_t GetEventVzBin() const
virtual void GetVertex(Double_t v[3]) const
TString fCocktailGenNames[10]
Array with name of generators to study, first must be always empty.
AliCaloTrackReader * fReader
Access to ESD/AOD/MC data and other utilities.
TString fCalorimeterString
Calorimeter selection.
virtual Float_t GetCentralityBin(Int_t i) const
virtual Int_t GetEventNumber() const
Daughter of AliCaloTrackParticle that includes correlation part.
Int_t GetCocktailGeneratorAndIndex(Int_t index, TString &nameGen) const
Base class for CaloTrackCorr analysis algorithms.
virtual TString GetBaseParametersList()
virtual AliFiducialCut * GetFiducialCut()
Container for input particle information on CaloTrackCorr package.
Int_t GetTrackMultiplicity(Int_t cut=0) const
virtual TList * GetAODBranchList() const
virtual Int_t GetEventCentralityBin() const
virtual Int_t GetEventRPBin() const
TClonesArray * fInputAODBranch
! Selected input particles branch.
Float_t fMinPt
Maximum pt of (trigger) particles in the analysis.
Bool_t fUseTrackMultBins
Use track multiplicity and not centrality bins in mixing.
virtual TClonesArray * GetAODBranch(const TString &aodBranchName) const
Recover ouput and input AOD pointers for each event in AliCaloTrackMaker.
virtual Int_t GetCentralityOpt() const
virtual AliAODEvent * GetOutputEvent() const
AliIsolationCut * fIC
Isolation cut utils.
Float_t fMaxPt
Minimum pt of (trigger) particles in the analysis.
virtual AliCalorimeterUtils * GetCaloUtils() const
Int_t fNMaxRowsFullMin
Last of EMCAL/PHOS rows full detector.
AliAnaCaloTrackCorrBaseClass()
Int_t GetNumberOfSuperModulesUsed() const
virtual AliEventplane * GetEventPlane() const
Bool_t fCheckRealCaloAcc
When analysis of MC particle kinematics, check their hit in Calorimeter in Real Geometry or use AliFi...
TString fOutputAODClassName
Type of aod objects to be stored in the TClonesArray (AliCaloTrackParticle, AliCaloTrackParticleCorre...
virtual Int_t GetNCentrBin() const
Number of bins in reaction plain.
virtual TObjArray * GetPHOSClusters() const
virtual TObjArray * GetPHOSClusters() const
virtual AliMCEvent * GetMC() const
TObject * FindObject(int bin, const char *nameH, const TList *lst, Bool_t normPerEvent=kTRUE)
virtual TClonesArray * GetAODCaloClusters() const
Int_t fNRCU
Number of EMCAL/PHOS RCU.
Bool_t fNewAOD
Flag, new aod branch added to the analysis or not.
Bool_t fMakePlots
Print plots.
AliMCAnalysisUtils * fMCUtils
MonteCarlo Analysis utils.
virtual Int_t GetNRPBin() const
Number of bins in vertex.
virtual TClonesArray * GetCreateOutputAODBranch()
Create AOD branch filled in the analysis.
Int_t fNMaxRowsFull
Number of EMCAL/PHOS rows full detector.
virtual AliMCAnalysisUtils * GetMCAnalysisUtils()
AliCaloPID * fCaloPID
PID calculation utils.
virtual Int_t GetEventNumber() const
Int_t fNCocktailGenNames
Number of generators to study.
virtual Int_t GetTrackMultiplicityBin() const
Cut on vertex position.
Int_t fNrpBin
Number of bins in event container for reaction plain.
AliNeutralMesonSelection * fNMS
Neutral Meson Selection utities.
virtual void Print(const Option_t *) const
Print some relevant parameters set for the analysis.
Bool_t fDataMC
Flag to access MC data when using ESD or AOD.
TClonesArray * fOutputAODBranch
! Selected output particles branch.
virtual TClonesArray * GetAODTracks() const
virtual AliVCluster * FindCluster(TObjArray *clusters, Int_t clId, Int_t &iclus, Int_t first=0)
virtual AliCaloTrackReader * GetReader() const
Int_t fNZvertBin
Number of bins in event container for vertex position.
virtual Int_t GetEventMixBin() const
Int_t fNMaxRowsFullMax
First of EMCAL/PHOS rows full detector.
Bool_t fCheckCaloPID
Do analysis for calorimeters.
Int_t fCalorimeter
Calorimeter selection.
TString fAddToHistogramsName
Add this string to histograms name.
Int_t GetFirstSuperModuleUsed() const
virtual TObjArray * GetEMCALClusters() const
DCal, not used so far, just in case.
virtual void InitCaloParameters()
virtual Int_t CheckMixedEventVertex(Int_t caloLabel, Int_t trackLabel)
virtual Int_t GetNZvertBin() const
TArrayF * GetEMCALFidCutMinPhiArray() const
TString fAODObjArrayName
Name of ref array kept in a TList in AliAODParticleCorrelation with clusters or track. references.
Int_t GetNOverlaps(const Int_t *label, UInt_t nlabels, Int_t mctag, Int_t mesonLabel, AliMCEvent *mcevent, Int_t *overpdg, Int_t *overlabel)
virtual void ConnectInputOutputAODBranches()
virtual AliMixedEvent * GetMixedEvent() const
virtual TObjArray * GetCTSTracks() const
Int_t fNMaxRows
Number of EMCAL/PHOS rows per SM.