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),
68 fNMS(0x0), fReader(0x0),
69 fStudyClusterOverlapsPerGenerator(0),
98 AliFatal(
"No AOD branch available!!!\n");
104 if (strcmp(
fOutputAODBranch->GetClass()->GetName(),
"AliCaloTrackParticle")==0)
108 else if(strcmp(
fOutputAODBranch->GetClass()->GetName(),
"AliCaloTrackParticleCorrelation")==0)
114 AliFatal(Form(
"Cannot add an object of type < %s >, to the AOD TClonesArray \n",
fOutputAODBranch->GetClass()->GetName()));
134 else if(trackLabel >= 0 )
155 AliDebug(3,Form(
"AliAnaCaloTrackCorrBaseClass::ConnectInputOutputAODBranches() - Connect Input with name: <%s>; Connect output with name <%s>\n",
fInputAODName.Data(),
fOutputAODName.Data()));
158 AliAODHandler* aodHandler = 0x0;
160 if((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler()) outAOD = kTRUE;
161 if(outAOD) aodHandler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
162 else aodHandler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
169 else if (aodHandler->GetExtensions())
171 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
GetReader()->GetDeltaAODFileName());
231 if ( !clusters )
return 0x0;
233 for(iclus = first; iclus < clusters->GetEntriesFast(); iclus++)
235 AliVCluster *cluster=
dynamic_cast<AliVCluster*
> (clusters->At(iclus));
238 if ( cluster->GetID() == clId )
253 AliDebug(3,Form(
"AliAnaCaloTrackCorrBaseClass::GetAODBranch() - Get Input Branch with name: <%s>; \n",aodName.Data()));
256 AliAODHandler* aodHandler = 0x0;
258 if((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler()) outAOD = kTRUE;
259 if(outAOD) aodHandler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
260 else aodHandler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
266 else if (aodHandler->GetExtensions())
268 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
GetReader()->GetDeltaAODFileName());
271 TClonesArray * aodbranch = (TClonesArray*) aodEvent->FindListObject(aodName);
272 if(aodbranch)
return aodbranch;
336 const Int_t buffersize = 255;
337 char onePar[buffersize] ;
338 snprintf(onePar,buffersize,
"--- AliAnaCaloTrackCorrBaseClass ---\n") ;
340 snprintf(onePar,buffersize,
"Minimal P_t: %2.2f ; Max\n",
fMinPt) ;
342 snprintf(onePar,buffersize,
"Minimal P_t: %2.2f ; Max\n",
fMaxPt) ;
344 snprintf(onePar,buffersize,
"|t_{1}-t_{2}| < %2.2f ; Max\n",
fPairTimeCut) ;
346 snprintf(onePar,buffersize,
"fDataMC =%d (Check MC information, on/off) \n",
fDataMC) ;
348 snprintf(onePar,buffersize,
"fCheckFidCut=%d (Check Fiducial cut selection on/off) \n",
fCheckFidCut) ;
350 snprintf(onePar,buffersize,
"fCheckRealCaloAcc=%d (Check Real Calo Acceptance on/off) \n",
fCheckRealCaloAcc) ;
352 snprintf(onePar,buffersize,
"fCheckCaloPID =%d (Use Bayesian PID in calorimetes, on/off) \n",
fCheckCaloPID) ;
354 snprintf(onePar,buffersize,
"fRecalculateCaloPID =%d (Calculate PID from shower/tof/tracking parameters, on/off) \n",
fRecalculateCaloPID) ;
356 snprintf(onePar,buffersize,
"fInputAODName =%s Input AOD name \n",
fInputAODName.Data()) ;
360 snprintf(onePar,buffersize,
"fOutputAODName =%s Output AOD name \n",
fOutputAODName.Data()) ;
362 snprintf(onePar,buffersize,
"fOutputAODClassName =%s Output AOD class name \n",
fOutputAODClassName.Data()) ;
365 snprintf(onePar,buffersize,
"fAODObjArrayName =%s Reference arrays in AOD name \n",
fAODObjArrayName.Data()) ;
367 snprintf(onePar,buffersize,
"fAddToHistogramsName =%s String added to beginning of histograms name \n",
fAddToHistogramsName.Data()) ;
389 if(cluster->GetNLabels() == 0 || cluster->GetLabel() < 0 )
return -1;
398 Bool_t overlapGener = kFALSE;
399 Bool_t overlapGenerHIJING = kFALSE;
400 Bool_t overlapGenerOther = kFALSE;
405 const UInt_t nlabels = cluster->GetNLabels();
408 for(
UInt_t ilabel = 1; ilabel < nlabels; ilabel++)
410 Int_t label2 = cluster->GetLabels()[ilabel];
417 if(genName2 != genName)
421 if(!genNameBkg.Contains(genName2) && indexBkg != index2)
423 genNameBkg = Form(
"%s_%s",genNameBkg.Data(), genName2.Data());
427 overlapGener = kTRUE;
429 if( genName2.Contains(
"ijing") && !genName.Contains(
"ijing"))
430 overlapGenerHIJING = kTRUE;
432 if(!genName2.Contains(
"ijing"))
433 overlapGenerOther = kTRUE;
437 Int_t genBkgTag = -1;
439 if ( !overlapGener ) genBkgTag = 0;
440 else if ( overlapGenerHIJING && !overlapGenerOther) genBkgTag = 1;
441 else if ( !overlapGenerHIJING && overlapGenerOther) genBkgTag = 2;
442 else if ( overlapGenerHIJING && overlapGenerOther) genBkgTag = 3;
446 Int_t overpdg[nlabels];
447 Int_t overlab[nlabels];
449 Bool_t sameGenOverlap = kFALSE;
450 Bool_t sameGenOverlapHI = kFALSE;
451 for(
Int_t iover = 0; iover < noverlaps; iover++)
457 if ( genName2==genName && index==index2)
459 if ( !genName.Contains(
"ijing") ) sameGenOverlap = kTRUE;
460 else sameGenOverlapHI = kTRUE;
467 if(genBkgTag == 0) genBkgTag = 2;
468 if(genBkgTag == 1) genBkgTag = 3;
472 if(genName.Contains(
"ijing"))
477 if(!overlapGener) genBkgTag = 1;
482 if(!overlapGener) genBkgTag = 0;
495 AliInfo(Form(
"Create AOD branch of %s objects and with name < %s >\n",
554 AliWarning(Form(
"Bin not found for track multiplicity %d",trackMult));
566 Int_t curCentrBin = 0;
577 if((minCent< 0 && maxCent< 0) || minCent>=maxCent)
592 AliDebug(1,Form(
"Current CentrBin %d, centrality %d, n bins %d, max bin from centrality %d",
610 if(epAngle < 0 || epAngle >TMath::Pi())
612 AliWarning(Form(
"Wrong event plane angle : %f \n",epAngle));
616 curRPBin = TMath::Nint(epAngle*(
GetNRPBin()-1)/TMath::Pi());
619 AliDebug(1,Form(
"Current RP bin %d, bin float %f, angle %f, n bins %d",
637 AliDebug(1,Form(
"AliAnaCaloTrackCorrBaseClass::GetEventVzBin() - %d, vz %2.2f, n bins %d",
648 if(iCen<0 || iVz < 0 || iRP < 0)
670 AliDebug(1,Form(
"Bins : cent %d, vz %d, RP %d, event %d/%d",
683 (AliAnalysisManager::GetAnalysisManager())->AddClassDebug(this->ClassName(),
fDebug);
738 for(
Int_t igen = 7; igen < 10; igen++)
741 for(
Int_t igen = 0; igen < 10; igen++)
774 if ( minPhi > 70 && maxPhi < 190)
779 else if( minPhi > 250 && maxPhi < 330)
852 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)",
867 printf(
"New AOD: = %d\n",
fNewAOD);
874 printf(
"Min Photon pT = %2.2f\n",
fMinPt) ;
875 printf(
"Max Photon pT = %3.2f\n",
fMaxPt) ;
880 printf(
"Check MC labels = %d\n",
fDataMC);
882 printf(
"Debug Level = %d\n",
fDebug);
899 else AliFatal(Form(
"Detector < %s > not known!", calo.Data()));
915 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.
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.