fTpcTracks(0), fTpcTracksA(0),
fVzeroMult(0.), fVzeroMultA(0.), fVzeroMultC(0.),
fVzeroMultFlagged(0.), fVzeroMultFlaggedA(0.), fVzeroMultFlaggedC(0.),
+ fSpdNClusters(0),
fVzeroBinning(350), fVzeroBinningMin(0.), fVzeroBinningMax(35000.),
fTpcBinning(200),fTpcBinningMin(0.),fTpcBinningMax(8000.),
fZdcBinning(280),fZdcBinningMin(0.),fZdcBinningMax(140.),
fZnpBinning(200),fZnpBinningMin(0.),fZnpBinningMax(100.),
fProcessPhos(true), fProcessEmcal(true),
fPhosTotalEt(0.0), fEmcalTotalEt(0.0),
- fCaloBinning(100),fCaloBinningMin(0.),fCaloBinningMax(100.){
+ fCaloBinning(100),fCaloBinningMin(0.),fCaloBinningMax(100.),
+ fSpdBinning(200),fSpdBinningMin(0.),fSpdBinningMax(15000.) {
// see header file for class documentation
// or
// refer to README to build package
*/
//##################################################################################
-Int_t AliHLTMultiplicityCorrelations::ProcessEvent( AliESDEvent *esd ) {
+Int_t AliHLTMultiplicityCorrelations::ProcessEvent( AliESDEvent *esd, Int_t nSpdClusters) {
// see header file for class documentation
Int_t iResult = 0;
// -- TPC .. To be done before the others
if (fESDEvent->GetNumberOfTracks() > 0)
iResult = ProcessTPC();
+
+ fSpdNClusters = nSpdClusters;
+ iResult = ProcessSPD();
// -- CALO, process with or without clusters, we want the zero-bin
iResult = ProcessCALO();
if (fESDZDC)
iResult = ProcessZDC();
+
+
return iResult;
}
iResult = SetupZDC();
iResult = SetupTPC();
iResult = SetupCALO();
+ iResult = SetupSPD();
iResult = SetupCorrelations();
return iResult;
fHistList->Add(new TH2F("fCorrVzeroFlaggedvsTotEt",
"Multiplicity_{flagged}^{VZERO} vs Total E_{T} in Calorimeters;Multiplicity_{flagged}^{VZERO};E_{T} (GeV)",
fVzeroBinning,fVzeroBinningMin,fVzeroBinningMax, fCaloBinning,fCaloBinningMin,fCaloBinningMax));
-
+
+ // ----------------------------------------------------
+ // SPD vs TPC
+ // ----------------------------------------------------
+
+ fHistList->Add(new TH2F("fCorrSpdTpcNch", "N_{clusters}^{SPD} vs N_{ch}^{TPC};N_{clusters}^{SPD};N_{ch}^{TPC}",
+ fSpdBinning,fSpdBinningMin,fSpdBinningMax, fTpcBinning,fTpcBinningMin,fTpcBinningMax));
+
+ // ----------------------------------------------------
+ // SPD vs VZERO
+ // ----------------------------------------------------
+
+ fHistList->Add(new TH2F("fCorrVzeroSpd",
+ "Multiplicity^{VZERO} vs N_{ch}^{SPD};Multiplicity^{VZERO};N^{SPD}",
+ fVzeroBinning,fVzeroBinningMin,fVzeroBinningMax, fSpdBinning,fSpdBinningMin,fSpdBinningMax));
+ fHistList->Add(new TH2F("fCorrVzeroASpd",
+ "Multiplicity^{VZERO} vs N_{ch}^{SPD} A;Multiplicity^{VZERO};N^{SPD}",
+ fVzeroBinning,fVzeroBinningMin,fVzeroBinningMax, fSpdBinning,fSpdBinningMin,fSpdBinningMax));
+ fHistList->Add(new TH2F("fCorrVzeroCSpd",
+ "Multiplicity^{VZERO} vs N_{ch}^{SPD} C;Multiplicity^{VZERO};N^{SPD}",
+ fVzeroBinning,fVzeroBinningMin,fVzeroBinningMax, fSpdBinning,fSpdBinningMin,fSpdBinningMax));
+
+ fHistList->Add(new TH2F("fCorrVzeroFSpd",
+ "Multiplicity^{VZERO} vs N_{ch}^{SPD};Multiplicity_{flagged}^{VZERO};N^{SPD}",
+ fVzeroBinning,fVzeroBinningMin,fVzeroBinningMax, fSpdBinning,fSpdBinningMin,fSpdBinningMax));
+ fHistList->Add(new TH2F("fCorrVzeroFASpd",
+ "Multiplicity^{VZERO} vs N_{ch}^{SPD} A;Multiplicity_{flagged}^{VZERO};N^{SPD}",
+ fVzeroBinning,fVzeroBinningMin,fVzeroBinningMax, fSpdBinning,fSpdBinningMin,fSpdBinningMax));
+ fHistList->Add(new TH2F("fCorrVzeroFCSpd",
+ "Multiplicity^{VZERO} vs N_{ch}^{SPD} C;Multiplicity_{flagged}^{VZERO};N^{SPD}",
+ fVzeroBinning,fVzeroBinningMin,fVzeroBinningMax, fSpdBinning,fSpdBinningMin,fSpdBinningMax));
+
// ----------------------------------------------------
- //
+ // SPD vs ZDC
// ----------------------------------------------------
+ // E_{ZDC} vs Multiplicty SPD
+ fHistList->Add(new TH2F("fCorrEzdcSpd", "E_{ZDC} vs N_{ch}^{SPD};E_{ZDC} (TeV);N^{SPD}",
+ fZdcBinning,fZdcBinningMin,fZdcBinningMax, fSpdBinning,fSpdBinningMin,fSpdBinningMax));
+ fHistList->Add(new TH2F("fCorrEzdcASpd","E_{ZDC} vs N_{ch}^{SPD} A;E_{ZDC} (TeV);N^{SPD}",
+ fZdcBinning,fZdcBinningMin,fZdcBinningMax, fSpdBinning,fSpdBinningMin,fSpdBinningMax));
+ fHistList->Add(new TH2F("fCorrEzdcCSpd","E_{ZDC} vs N_{ch}^{SPD} C;E_{ZDC} (TeV);N^{SPD}",
+ fZdcBinning,fZdcBinningMin,fZdcBinningMax, fSpdBinning,fSpdBinningMin,fSpdBinningMax));
+
+
return 0;
}
//##################################################################################
-Int_t AliHLTMultiplicityCorrelations::SetupCALO()
-{
- // Calo histos
- if(fProcessPhos)
- {
+Int_t AliHLTMultiplicityCorrelations::SetupCALO() {
+ // see header file for class documentation
+
+ if(fProcessPhos) {
fHistList->Add(new TH1F("fPhosEt", "Total E_{T} in PHOS:E (GeV)",
fCaloBinning,fCaloBinningMin,fCaloBinningMax));
}
- if(fProcessEmcal)
- {
+ if(fProcessEmcal) {
fHistList->Add(new TH1F("fEmcalEt", "Total E_{T} in EMCAL:E (GeV)",
fCaloBinning,fCaloBinningMin,fCaloBinningMax));
}
- if(fProcessPhos || fProcessEmcal)
- {
+ if(fProcessPhos || fProcessEmcal) {
fHistList->Add(new TH1F("fTotalEt", "Total E_{T} in calorimeters:E (GeV)",
fCaloBinning,fCaloBinningMin,fCaloBinningMax));
}
return 0;
}
+//##################################################################################
+Int_t AliHLTMultiplicityCorrelations::SetupSPD() {
+ // see header file for class documentation
+
+ fHistList->Add(new TH1F("fSpdNClusters", "Multplicity_{SPD};Multplicity_{SPD};N_{Events}",
+ fSpdBinning,fSpdBinningMin,fSpdBinningMax));
+
+ return 0;
+}
+
+
/*
* ---------------------------------------------------------------------------------
* Process - private
//##################################################################################
Int_t AliHLTMultiplicityCorrelations::ProcessTPC() {
+ // see header file for class documentation
Int_t iResult = 0 ;
//##################################################################################
Int_t AliHLTMultiplicityCorrelations::ProcessVZERO() {
+ // see header file for class documentation
Int_t iResult = 0 ;
(static_cast<TH2F*>(fHistList->FindObject("fCorrVzeroFANch")))->Fill(fVzeroMultFlaggedA, fTpcTracksA);
(static_cast<TH2F*>(fHistList->FindObject("fCorrVzeroFCNch")))->Fill(fVzeroMultFlaggedC, fTpcTracksA);
}
+
+ // -- VZERO - SPD correlations
+ if (fESDEvent->GetNumberOfTracks() > 0) {
+ (static_cast<TH2F*>(fHistList->FindObject("fCorrVzeroSpd")))->Fill(fVzeroMult, fSpdNClusters);
+ (static_cast<TH2F*>(fHistList->FindObject("fCorrVzeroASpd")))->Fill(fVzeroMultA, fSpdNClusters);
+ (static_cast<TH2F*>(fHistList->FindObject("fCorrVzeroCSpd")))->Fill(fVzeroMultC, fSpdNClusters);
+
+ (static_cast<TH2F*>(fHistList->FindObject("fCorrVzeroFSpd")))->Fill(fVzeroMultFlagged, fSpdNClusters);
+ (static_cast<TH2F*>(fHistList->FindObject("fCorrVzeroFASpd")))->Fill(fVzeroMultFlaggedA, fSpdNClusters);
+ (static_cast<TH2F*>(fHistList->FindObject("fCorrVzeroFCSpd")))->Fill(fVzeroMultFlaggedC, fSpdNClusters);
+ }
// -- VZERO - CALO correlations
if (fProcessPhos || fProcessEmcal) {
//##################################################################################
Int_t AliHLTMultiplicityCorrelations::ProcessZDC() {
+ // see header file for class documentation
Int_t iResult = 0 ;
(static_cast<TH2F*>(fHistList->FindObject("fCorrZdcbANch")))->Fill(fESDZDC->GetImpactParamSideA(), fTpcTracksA);
(static_cast<TH2F*>(fHistList->FindObject("fCorrZdcbCNch")))->Fill(fESDZDC->GetImpactParamSideC(), fTpcTracksA);
}
+
+ // -- ZDC - SPD correlations
+ (static_cast<TH2F*>(fHistList->FindObject("fCorrEzdcSpd")))->Fill(zdcE, fSpdNClusters);
+ (static_cast<TH2F*>(fHistList->FindObject("fCorrEzdcASpd")))->Fill(zdcEA, fSpdNClusters);
+ (static_cast<TH2F*>(fHistList->FindObject("fCorrEzdcCSpd")))->Fill(zdcEC, fSpdNClusters);
+
- // -- VZERO - TPC correlations
+ // -- VZERO - ZDC correlations
if (fESDVZERO) {
(static_cast<TH2F*>(fHistList->FindObject("fCorrEzdcVzero")))->Fill(zdcE, fVzeroMult);
(static_cast<TH2F*>(fHistList->FindObject("fCorrEzdcVzeroA")))->Fill(zdcEA, fVzeroMultA);
}
//##################################################################################
-Int_t AliHLTMultiplicityCorrelations::ProcessCALO()
-{
- // CALO
+Int_t AliHLTMultiplicityCorrelations::ProcessCALO() {
+ // see header file for class documentation
TH1F* hPhosEt = static_cast<TH1F*>(fHistList->FindObject("fPhosEt")); // PHOS Tot E_T
TH1F* hEmcalEt = static_cast<TH1F*>(fHistList->FindObject("fEmcalEt")); // EMCAL Tot E_T
return 0;
}
+
+//##################################################################################
+Int_t AliHLTMultiplicityCorrelations::ProcessSPD() {
+ // see header file for class documentation
+
+ (static_cast<TH2F*>(fHistList->FindObject("fSpdNClusters")))->Fill(fSpdNClusters);
+ (static_cast<TH2F*>(fHistList->FindObject("fCorrSpdTpcNch")))->Fill(fSpdNClusters,fTpcTracksA);
+
+ return 0;
+}
#include "AliHLTErrorGuard.h"
#include "AliHLTDataTypes.h"
#include "AliHLTMultiplicityCorrelationsComponent.h"
+#include "AliHLTITSClusterDataFormat.h"
/** ROOT macro for the implementation of ROOT specific class methods */
ClassImp(AliHLTMultiplicityCorrelationsComponent)
void AliHLTMultiplicityCorrelationsComponent::GetInputDataTypes( vector<AliHLTComponentDataType>& list) {
// see header file for class documentation
list.push_back(kAliHLTDataTypeESDObject|kAliHLTDataOriginAny);
+ list.push_back(kAliHLTDataTypeClusters|kAliHLTDataOriginITSSPD);
}
// #################################################################################
return 4;
}
+ // binningSpd
+ if (argument.CompareTo("-binningSpd")==0) {
+ if (++ii>=argc) return -EPROTO;
+ argument=argv[ii];
+ Int_t binning = argument.Atoi();
+ if (++ii>=argc) return -EPROTO;
+ argument=argv[ii];
+ Float_t min = argument.Atof();
+ if (++ii>=argc) return -EPROTO;
+ argument=argv[ii];
+ Float_t max = argument.Atof();
+
+ fCorrObj->SetBinningSpd(binning, min, max);
+ return 4;
+ }
+
// binningZdc
if (argument.CompareTo("-binningZdc")==0) {
if (++ii>=argc) return -EPROTO;
if (!IsDataEvent())
return 0;
+
// -- Get ESD object
+ AliESDEvent *esdEvent = NULL;
for ( const TObject *iter = GetFirstInputObject(kAliHLTDataTypeESDObject); iter != NULL; iter = GetNextInputObject() ) {
-
- AliESDEvent *esdEvent = dynamic_cast<AliESDEvent*>(const_cast<TObject*>( iter ) );
+ esdEvent = dynamic_cast<AliESDEvent*>(const_cast<TObject*>( iter ) );
if( !esdEvent ){
HLTWarning("Wrong ESDEvent object received");
iResult = -1;
continue;
}
esdEvent->GetStdContent();
- iResult = fCorrObj->ProcessEvent(esdEvent);
}
+ // -- Get SPD clusters
+ // ---------------------
+ const AliHLTComponentBlockData* iter = NULL;
+ Int_t totalSpacePoint = 0;
+
+ for ( iter = GetFirstInputBlock(kAliHLTDataTypeClusters|kAliHLTDataOriginITSSPD);
+ iter != NULL; iter = GetNextInputBlock() ) {
+
+ const AliHLTITSClusterData* clusterData = (const AliHLTITSClusterData*) iter->fPtr;
+ Int_t nSpacepoint = (Int_t) clusterData->fSpacePointCnt;
+ totalSpacePoint += nSpacepoint;
+ }
+
+ // -- Process Event
+ // ------------------
+ if (esdEvent)
+ iResult = fCorrObj->ProcessEvent(esdEvent,totalSpacePoint);
+
if (iResult) {
HLTError("Error while processing event inside multiplicity correlation object");
return iResult;