18 #include <TClonesArray.h>
20 #include "AliVEvent.h"
23 #include "AliTLorentzVector.h"
35 fMinDistanceTPCSectorEdge(-1),
39 fClassName =
"AliVParticle";
48 fMinDistanceTPCSectorEdge(-1),
70 AliVParticle *part = 0;
72 if (option.Contains(
"p")) {
74 if (part->P() > partMax->P()) partMax = part;
79 if (part->Pt() > partMax->Pt()) partMax = part;
97 if (i < 0 || i >= this->
fClArray->GetEntriesFast())
return 0;
98 AliVParticle *vp =
static_cast<AliVParticle*
>(
fClArray->At(i));
110 UInt_t rejectionReason = 0;
116 AliDebug(2,
"Particle not accepted.");
171 if (mass < 0) mass = part->M();
172 mom.SetPtEtaPhiM(part->Pt(), part->Eta(), part->Phi(),
mass);
176 mom.SetPtEtaPhiM(0, 0, 0, 0);
209 if (mass < 0) mass = vp->M();
210 mom.SetPtEtaPhiM(vp->Pt(), vp->Eta(), vp->Phi(),
mass);
214 mom.SetPtEtaPhiM(0, 0, 0, 0);
234 if (mass < 0) mass = vp->M();
235 mom.SetPtEtaPhiM(vp->Pt(), vp->Eta(), vp->Phi(),
mass);
239 mom.SetPtEtaPhiM(0, 0, 0, 0);
261 if (mass < 0) mass = vp->M();
262 mom.SetPtEtaPhiM(vp->Pt(), vp->Eta(), vp->Phi(),
mass);
266 mom.SetPtEtaPhiM(0, 0, 0, 0);
286 if (mass < 0) mass = vp->M();
287 mom.SetPtEtaPhiM(vp->Pt(), vp->Eta(), vp->Phi(),
mass);
291 mom.SetPtEtaPhiM(0, 0, 0, 0);
309 if (!r)
return kFALSE;
311 AliTLorentzVector mom;
337 if (!r)
return kFALSE;
339 AliTLorentzVector mom;
406 const Double_t pi = TMath::Pi();
407 const Double_t kSector = pi/9;
408 Double_t phiDist = TMath::Abs(mom.Phi() - TMath::FloorNint(mom.Phi()/kSector)*kSector);
428 UInt_t rejectionReason = 0;
443 if (cls.InheritsFrom(
"AliVParticle"))
fClassName = clname;
444 else AliError(Form(
"Unable to set class name %s for a AliParticleContainer, it must inherits from AliVParticle!",clname));
454 static TString trackString;
466 return trackString.Data();
571 UInt_t rejection = 0;
586 fkContainer(other.fkContainer),
587 fAcceptIndices(other.fAcceptIndices),
588 fCurrentPos(other.fCurrentPos),
589 fForward(other.fForward)
677 if(fCurrentPos < 0 || fCurrentPos >= fAcceptIndices.GetSize()){
680 return fkContainer->GetParticle(fAcceptIndices[fCurrentPos]);
707 fCurrentPos(startpos),
718 fkContainer(other.fkContainer),
719 fCurrentPos(other.fCurrentPos),
720 fForward(other.fForward)
807 if(fCurrentPos >= 0 && fCurrentPos < fkContainer->
GetNParticles())
808 return fkContainer->GetParticle(fCurrentPos);
817 std::vector<AliVParticle *> reference, variation;
818 AliVParticle *test = NULL;
819 for(
int iclust = 0; iclust < cont->
GetNParticles(); iclust++){
822 UInt_t rejectionReason = 0;
825 reference.push_back(test);
831 variation.push_back(*iter);
836 variation.push_back(*iter);
842 if(reference.size() < 30){
843 std::cout <<
"Paritcles in reference container: " << std::endl;
844 std::cout <<
"===========================================" << std::endl;
845 for(std::vector<AliVParticle *>::iterator refit = reference.begin(); refit != reference.end(); ++refit){
846 std::cout <<
"Address: " << *refit << std::endl;
849 if(variation.size() < 30){
850 std::cout <<
"Paritcles in test container: " << std::endl;
851 std::cout <<
"===========================================" << std::endl;
852 for(std::vector<AliVParticle *>::iterator varit = variation.begin(); varit != variation.end(); ++varit){
853 std::cout <<
"Address: " << *varit << std::endl;
860 bool failure =
false;
862 for(std::vector<AliVParticle *>::iterator clit = reference.begin(); clit != reference.end(); ++clit){
863 if(std::find(variation.begin(), variation.end(), *clit) == variation.end()) {
865 std::cout <<
"Could not find particle with address " << *clit <<
" in test container" << std::endl;
872 for(std::vector<AliVParticle *>::iterator clit = variation.begin(); clit != variation.end(); ++clit){
873 if(std::find(reference.begin(), reference.end(), *clit) == reference.end()) {
875 std::cout <<
"Could not find particle with address " << *clit <<
" in reference container" << std::endl;
880 if(failure) testresult = 2;
881 }
else testresult = 1;
883 std::cout <<
"Unit test particle container, iterator type " << iteratorType << std::endl;
884 std::cout <<
"Number of expected particles: " << reference.size() <<
", number of found particles: " << variation.size() << std::endl;
885 std::cout <<
"Test result: " << testresult << std::endl;
886 std::cout <<
"-----------------------------------------------------------------------" << std::endl;
all_iterator begin() const
virtual Bool_t ApplyKinematicCuts(const AliTLorentzVector &mom, UInt_t &rejectionReason) const
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
accept_iterator & operator++()
virtual AliVParticle * GetNextAcceptParticle()
int fCurrentPos
Current position inside the container.
all_iterator & operator++()
all_iterator & operator--()
all_iterator rend() const
const char * GetTitle() const
accept_iterator accept_begin() const
accept_iterator accept_rbegin() const
void SetClassName(const char *clname)
Int_t GetNParticles() const
UInt_t fBitMap
bitmap mask
virtual Bool_t ApplyParticleCuts(const AliVParticle *vp, UInt_t &rejectionReason) const
TString fClassName
name of the class in the TClonesArray
virtual Bool_t GetMomentum(TLorentzVector &mom, const AliVParticle *part, Double_t mass) const
TArrayI fAcceptIndices
Indices of accepted clusters.
Track too close to the TPC sector boundary.
all_iterator rbegin() const
virtual Bool_t GetNextMomentum(TLorentzVector &mom)
Container for particles within the EMCAL framework.
virtual Bool_t GetNextAcceptMomentum(TLorentzVector &mom)
bool fForward
Direction, expressed in forward direction.
AliVParticle * operator*() const
stl iterator over all clusters
AliVParticle * operator*() const
bool operator!=(const all_iterator &other) const
Double_t GetMinPt() const
virtual AliVParticle * GetLeadingParticle(const char *opt="")
virtual AliVParticle * GetParticle(Int_t i=-1) const
Base class for container structures within the EMCAL framework.
const AliParticleContainer * fkContainer
Container iterated over.
virtual AliVParticle * GetAcceptParticle(Int_t i=-1) const
accept_iterator accept_rend() const
Short_t fCharge
select particles with charge=fCharge
int fCurrentPos
Current position inside the container.
accept_iterator accept_end() const
virtual Bool_t AcceptParticle(const AliVParticle *vp, UInt_t &rejectionReason) const
stl iterator over accepted clusters
Double_t fMinDistanceTPCSectorEdge
require minimum distance to edge of TPC sector edge
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
Int_t fMinMCLabel
minimum MC label
const TString & GetArrayName() const
Double_t fMassHypothesis
if < 0 it will use a PID mass when available
Short_t fGeneratorIndex
select MC particles with generator index (default = -1 = switch off selection)
const AliParticleContainer * fkContainer
Container iterated over.
bool fForward
Direction, expressed in forward direction.
Particle charge did not match.
accept_iterator & operator--()
Int_t fMaxMCLabel
maximum MC label
virtual Bool_t ApplyKinematicCuts(const AliTLorentzVector &mom, UInt_t &rejectionReason) const
bool operator!=(const accept_iterator &other) const
accept_iterator & operator=(const accept_iterator &other)
int TestParticleContainerIterator(const AliParticleContainer *const cont, int iteratorType, bool verbose)
TClonesArray * fClArray
! Pointer to array in input event
Int_t GetNEntries() const
Int_t GetNAcceptedParticles() const
Int_t fCurrentID
! current ID for automatic loops
all_iterator & operator=(const all_iterator &other)
virtual Bool_t GetAcceptMomentum(TLorentzVector &mom, Int_t i) const
void ResetCurrentID(Int_t i=-1)
virtual AliVParticle * GetNextParticle()