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!!!");
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",
fOutputAODBranch->GetClass()->GetName()));
134 else if(trackLabel >= 0 )
155 AliDebug(3,Form(
"AliAnaCaloTrackCorrBaseClass::ConnectInputOutputAODBranches() - Connect Input with name: <%s>; Connect output with name <%s>",
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>;",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 ---") ;
340 snprintf(onePar,buffersize,
"Minimal P_t: %2.2f ;",
fMinPt) ;
342 snprintf(onePar,buffersize,
"Minimal P_t: %2.2f ;",
fMaxPt) ;
344 snprintf(onePar,buffersize,
"|t_{1}-t_{2}| < %2.2f;",
fPairTimeCut) ;
346 snprintf(onePar,buffersize,
"fDataMC =%d (Check MC information, on/off);",
fDataMC) ;
348 snprintf(onePar,buffersize,
"fCheckFidCut=%d (Check Fiducial cut selection on/off);",
fCheckFidCut) ;
350 snprintf(onePar,buffersize,
"fCheckRealCaloAcc=%d (Check Real Calo Acceptance on/off);",
fCheckRealCaloAcc) ;
352 snprintf(onePar,buffersize,
"fCheckCaloPID =%d (Use Bayesian PID in calorimetes, on/off);",
fCheckCaloPID) ;
354 snprintf(onePar,buffersize,
"fRecalculateCaloPID =%d (Calculate PID from shower/tof/tracking parameters, on/off);",
fRecalculateCaloPID) ;
356 snprintf(onePar,buffersize,
"fInputAODName =%s Input AOD name;",
fInputAODName.Data()) ;
360 snprintf(onePar,buffersize,
"fOutputAODName =%s Output AOD name",
fOutputAODName.Data()) ;
362 snprintf(onePar,buffersize,
"fOutputAODClassName =%s Output AOD class name;",
fOutputAODClassName.Data()) ;
365 snprintf(onePar,buffersize,
"fAODObjArrayName =%s Reference arrays in AOD name;",
fAODObjArrayName.Data()) ;
367 snprintf(onePar,buffersize,
"fAddToHistogramsName =%s String added to beginning of histograms name;",
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 >",
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",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 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.
virtual void SetCalorimeter(TString calo)
Set the calorimeter for the analysis. A string.
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.
virtual TClonesArray * GetAODBranch(TString &aodBranchName) const
Recover ouput and input AOD pointers for each event in AliCaloTrackMaker.
Float_t fMinPt
Maximum pt of (trigger) particles in the analysis.
Bool_t fUseTrackMultBins
Use track multiplicity and not centrality bins in mixing.
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...
Bool_t outAOD
Collision type: pp, pPb, PbPb.
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.