18 #include <TClonesArray.h> 20 #include "AliVEvent.h" 38 fMinDistanceTPCSectorEdge(-1),
39 fChargeCut(kNoChargeCut),
75 AliVParticle *part = 0;
77 if (option.Contains(
"p")) {
79 if (part->P() > partMax->P()) partMax = part;
84 if (part->Pt() > partMax->Pt()) partMax = part;
102 if (i < 0 || i >= this->
fClArray->GetEntriesFast())
return 0;
103 AliVParticle *vp =
static_cast<AliVParticle*
>(
fClArray->At(i));
115 UInt_t rejectionReason = 0;
121 AliDebug(2,
"Particle not accepted.");
175 if (part && part->Eta() < 1e6 && part->Eta() > -1e6) {
176 if (mass < 0) mass = part->M();
177 mom.SetPtEtaPhiM(part->Pt(), part->Eta(), part->Phi(),
mass);
181 mom.SetPtEtaPhiM(0, 0, 0, 0);
274 if (!r)
return kFALSE;
286 if(!status)
return false;
304 if (!r)
return kFALSE;
348 if (vp->Charge() == 0) {
355 if (vp->Charge() != 0) {
362 if (vp->Charge() <= 0) {
369 if (vp->Charge() >= 0) {
403 Double_t phiDist = TMath::Abs(mom.Phi() - TMath::FloorNint(mom.Phi()/
kSector)*kSector);
423 UInt_t rejectionReason = 0;
438 return trackString.Data();
498 std::vector<AliVParticle *> reference, variation;
499 AliVParticle *
test = NULL;
500 for(
int iclust = 0; iclust < cont->
GetNParticles(); iclust++){
503 UInt_t rejectionReason = 0;
506 reference.push_back(test);
512 variation.push_back(part);
516 for(
auto part : cont->
all()){
517 variation.push_back(part);
523 if(reference.size() < 30){
524 std::cout <<
"Paritcles in reference container: " << std::endl;
525 std::cout <<
"===========================================" << std::endl;
526 for(std::vector<AliVParticle *>::iterator refit = reference.begin(); refit != reference.end(); ++refit){
527 std::cout <<
"Address: " << *refit << std::endl;
530 if(variation.size() < 30){
531 std::cout <<
"Paritcles in test container: " << std::endl;
532 std::cout <<
"===========================================" << std::endl;
533 for(std::vector<AliVParticle *>::iterator varit = variation.begin(); varit != variation.end(); ++varit){
534 std::cout <<
"Address: " << *varit << std::endl;
541 bool failure =
false;
543 for(std::vector<AliVParticle *>::iterator clit = reference.begin(); clit != reference.end(); ++clit){
544 if(std::find(variation.begin(), variation.end(), *clit) == variation.end()) {
546 std::cout <<
"Could not find particle with address " << *clit <<
" in test container" << std::endl;
553 for(std::vector<AliVParticle *>::iterator clit = variation.begin(); clit != variation.end(); ++clit){
554 if(std::find(reference.begin(), reference.end(), *clit) == reference.end()) {
556 std::cout <<
"Could not find particle with address " << *clit <<
" in reference container" << std::endl;
561 if(failure) testresult = 2;
562 }
else testresult = 1;
564 std::cout <<
"Unit test particle container, iterator type " << iteratorType << std::endl;
565 std::cout <<
"Number of expected particles: " << reference.size() <<
", number of found particles: " << variation.size() << std::endl;
566 std::cout <<
"Test result: " << testresult << std::endl;
567 std::cout <<
"-----------------------------------------------------------------------" << std::endl;
virtual Bool_t ApplyKinematicCuts(const AliTLorentzVector &mom, UInt_t &rejectionReason) const
Apply kinematical selection to the momentum vector provided.
virtual AliVParticle * GetNextAcceptParticle()
void SetArray(const AliVEvent *event)
virtual Bool_t GetMomentum(TLorentzVector &mom, Int_t i) const
const char * GetTitle() const
const AliParticleIterableContainer all() const
Int_t GetNParticles() const
Declaration of class AliTLorentzVector.
UInt_t fBitMap
bitmap mask
virtual Bool_t ApplyParticleCuts(const AliVParticle *vp, UInt_t &rejectionReason) const
EChargeCut_t fChargeCut
select particles according to their charge
Track too close to the TPC sector boundary.
virtual Bool_t GetNextMomentum(TLorentzVector &mom)
Container for particles within the EMCAL framework.
virtual Bool_t GetNextAcceptMomentum(TLorentzVector &mom)
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.
EMCALIterableContainer::AliEmcalIterableContainerT< AliVParticle, EMCALIterableContainer::operator_star_object< AliVParticle > > AliParticleIterableContainer
virtual AliVParticle * GetAcceptParticle(Int_t i=-1) const
TClonesArray * GetArray() const
virtual Bool_t AcceptParticle(const AliVParticle *vp, UInt_t &rejectionReason) const
Double_t fMinDistanceTPCSectorEdge
require minimum distance to edge of TPC sector edge
void SetClassName(const char *clname)
static AliEmcalContainerIndexMap< TClonesArray, AliVParticle > fgEmcalContainerIndexMap
! Mapping from containers to indices
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
int RegisterArray(U *inputObject)
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)
virtual Bool_t GetMomentumFromParticle(TLorentzVector &mom, const AliVParticle *part, Double_t mass) const
const AliParticleIterableMomentumContainer accepted_momentum() const
virtual void SetArray(const AliVEvent *event)
Particle charge did not match.
TString fBaseClassName
name of the base class that this container can handle
Int_t fMaxMCLabel
maximum MC label
virtual Bool_t ApplyKinematicCuts(const AliTLorentzVector &mom, UInt_t &rejectionReason) const
const AliParticleIterableContainer accepted() const
void test(int runnumber=195345)
int TestParticleContainerIterator(const AliParticleContainer *const cont, int iteratorType, bool verbose)
TClonesArray * fClArray
! Pointer to array in input event
EMCALIterableContainer::AliEmcalIterableContainerT< AliVParticle, EMCALIterableContainer::operator_star_pair< AliVParticle > > AliParticleIterableMomentumContainer
Int_t GetNEntries() const
Int_t GetNAcceptedParticles() const
Int_t fCurrentID
! current ID for automatic loops
virtual Bool_t GetAcceptMomentum(TLorentzVector &mom, Int_t i) const
void ResetCurrentID(Int_t i=-1)
Reset the iterator to a given index.
const AliParticleIterableMomentumContainer all_momentum() const
virtual AliVParticle * GetNextParticle()