Exemplo n.º 1
0
void UEAnalysisOnRootple::MPIAnalysisRECO(Float_t weight,string tkpt)
{
  vector<TVector3*> JetRECO;
  JetRECO.clear();
  
  for(int j=0;j<NumberTracksJet;j++){
    if(fabs(EtaCJ[j])<etaRegion){
      TVector3* jetvector = new TVector3;
      //jetvector->SetPtEtaPhi(CalibrationPt(TrasverseMomentumTJ[j],tkpt)*TrasverseMomentumTJ[j], EtaTJ[j], PhiTJ[j]);
      jetvector->SetPtEtaPhi(TrasverseMomentumTJ[j], EtaTJ[j], PhiTJ[j]);
      JetRECO.push_back(jetvector);
    }
  }
  
  vector<AssociatedObject> assoJetRECO;
  assoJetRECO.clear();

  while(JetRECO.size()>1){
    int oldSize = JetRECO.size();
    vector<TVector3*>::iterator itH = JetRECO.begin();
    if((*itH)->Pt()>=ptThreshold){
      for(vector<TVector3*>::iterator it=JetRECO.begin();it!=JetRECO.end();it++){
	float azimuthDistanceJet = fabs( (*itH)->Phi() - (*it)->Phi() );
	if((*it)->Pt()/(*itH)->Pt()>=0.3){
	  if( (piG - rangePhi) <  azimuthDistanceJet && azimuthDistanceJet < (piG + rangePhi)) {
	    AssociatedObject tmpPair((*itH),(*it));
	    assoJetRECO.push_back(tmpPair);
	    JetRECO.erase(it);
	    int newSize = oldSize -1;
	    oldSize = newSize;
	    JetRECO.resize(newSize);
	    break;
	  }
	}
      }
    }
    JetRECO.erase(itH);
    int newSize = oldSize -1;
    JetRECO.resize(newSize);
  }
  
  if(assoJetRECO.size()){
    fNumbMPIRECO->Fill(assoJetRECO.size());
    vector<AssociatedObject>::iterator at= assoJetRECO.begin();
    
    const TVector3* leadingJet((*at).first);
    const TVector3* secondJet((*at).second);

    pPtRatio_vs_PtJleadRECO->Fill(leadingJet->Pt(),(secondJet->Pt()/leadingJet->Pt()));
    pPtRatio_vs_EtaJleadRECO->Fill(fabs(leadingJet->Eta()),(secondJet->Pt()/leadingJet->Pt()));
    pPtRatio_vs_PhiJleadRECO->Fill(leadingJet->Phi(),(secondJet->Pt()/leadingJet->Pt()));
    
    fdEtaLeadingPairRECO->Fill(leadingJet->Eta()-secondJet->Eta());
    float dPhiJet = fabs(leadingJet->Phi()-secondJet->Phi());
    if(dPhiJet> piG) dPhiJet = 2*piG -dPhiJet;
    dPhiJet = (180*dPhiJet)/piG;
    fdPhiLeadingPairRECO->Fill(dPhiJet);
    fptRatioLeadingPairRECO->Fill(secondJet->Pt()/leadingJet->Pt());
  }
}
Exemplo n.º 2
0
void computerPlay(Plateau& plat,Pion& pion) {
	PNoeud pn;
	pn.plat=plat;
	pn.computer=pion;
	pn.max=true;
	vector<PNoeud> l;
	pn.generateAll(l);
	vector< pair<float,vector<PNoeud>::iterator> > results;
	
	for(vector<PNoeud>::iterator it=l.begin();it!=l.end();it++) {
		float val=minmax::minimax(*it,DIFFICULTY);
		pair<float,vector<PNoeud>::iterator> tmpPair(val,it);
		if(results.empty()) {
			results.push_back(tmpPair);
			continue;
		}
		if(val==results[0].first)
			results.push_back(tmpPair);
		else if(val>results[0].first) {
			results.clear();
			results.push_back(tmpPair);
		}
	}
	boost::minstd_rand ran(clock());
	size_t choice=ran()%results.size();
	plat = results[choice].second->plat;
}
Exemplo n.º 3
0
void UEAnalysisMPI::mpiAnalysisRECO(float weight,float etaRegion,float ptThreshold,TClonesArray * TracksJet)
{
  std::vector<TLorentzVector*> JetRECO;
  JetRECO.clear();
  
  for(int j=0;j<TracksJet->GetSize();++j){
    TLorentzVector *v = (TLorentzVector*)TracksJet->At(j);
    if(fabs(v->Eta())<etaRegion){
      JetRECO.push_back(v);
    }
  }
  
  std::vector<AssociatedObject> assoJetRECO;
  assoJetRECO.clear();

  while(JetRECO.size()>1){
    int oldSize = JetRECO.size();
    std::vector<TLorentzVector*>::iterator itH = JetRECO.begin();
    if((*itH)->Pt()>=ptThreshold){
      for(std::vector<TLorentzVector*>::iterator it=JetRECO.begin();it!=JetRECO.end();it++){
	float azimuthDistanceJet = fabs( (*itH)->Phi() - (*it)->Phi() );
	if((*it)->Pt()/(*itH)->Pt()>=0.3){
	  if( (piG - rangePhi) <  azimuthDistanceJet && azimuthDistanceJet < (piG + rangePhi)) {
	    AssociatedObject tmpPair((*itH),(*it));
	    assoJetRECO.push_back(tmpPair);
	    JetRECO.erase(it);
	    int newSize = oldSize -1;
	    oldSize = newSize;
	    JetRECO.resize(newSize);
	    break;
	  }
	}
      }
    }
    JetRECO.erase(itH);
    int newSize = oldSize -1;
    JetRECO.resize(newSize);
  }
  
  if(assoJetRECO.size()){
    fNumbMPIRECO->Fill(assoJetRECO.size());
    std::vector<AssociatedObject>::iterator at= assoJetRECO.begin();
    
    const TLorentzVector* leadingJet((*at).first);
    const TLorentzVector* secondJet((*at).second);

    pPtRatio_vs_PtJleadRECO->Fill(leadingJet->Pt(),(secondJet->Pt()/leadingJet->Pt()));
    pPtRatio_vs_EtaJleadRECO->Fill(fabs(leadingJet->Eta()),(secondJet->Pt()/leadingJet->Pt()));
    pPtRatio_vs_PhiJleadRECO->Fill(leadingJet->Phi(),(secondJet->Pt()/leadingJet->Pt()));
    
    fdEtaLeadingPairRECO->Fill(leadingJet->Eta()-secondJet->Eta());
    float dPhiJet = fabs(leadingJet->Phi()-secondJet->Phi());
    if(dPhiJet> piG) dPhiJet = 2*piG -dPhiJet;
    dPhiJet = (180*dPhiJet)/piG;
    fdPhiLeadingPairRECO->Fill(dPhiJet);
    fptRatioLeadingPairRECO->Fill(secondJet->Pt()/leadingJet->Pt());
  }
}
///this findPair becomes really slow. Either sort the list to speedup the query, or
///use a different solution. It is mainly used for Removing overlapping pairs. Removal could be delayed.
///we could keep a linked list in each proxy, and store pair in one of the proxies (with lowest memory address)
///Also we can use a 2D bitmap, which can be useful for a future GPU implementation
 btBroadphasePair*	btSortedOverlappingPairCache::findPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1)
{
	if (!needsBroadphaseCollision(proxy0,proxy1))
		return 0;

	btBroadphasePair tmpPair(*proxy0,*proxy1);
	int findIndex = m_overlappingPairArray.findLinearSearch(tmpPair);

	if (findIndex < m_overlappingPairArray.size())
	{
		//btAssert(it != m_overlappingPairSet.end());
		 btBroadphasePair* pair = &m_overlappingPairArray[findIndex];
		return pair;
	}
	return 0;
}
Exemplo n.º 5
0
void UEAnalysisGAM::gammaAnalysisMC(Float_t weight,Float_t etaRegion,Float_t ptThreshold, TClonesArray& MCGamma, TClonesArray& ChargedJet)
{
  
  vector<TLorentzVector*> JetMC;
  vector<TLorentzVector*> GamMC;
  GamMC.clear();
  JetMC.clear();

  for(int j=0;j<MCGamma.GetSize();++j){
        TLorentzVector *g = (TLorentzVector*)MCGamma.At(j);
        if(fabs(g->Eta())<etaRegion){
	  GamMC.push_back(g);
	  if(GamMC.size()==1) JetMC.push_back(g);
	}
   }

  if(JetMC.size() != 0){
    for(int j=0;j<ChargedJet.GetSize();++j){
      TLorentzVector *w = (TLorentzVector*)ChargedJet.At(j);
      if(fabs(w->Eta())<etaRegion){
        JetMC.push_back(w);
      }
    }
    if(JetMC.size()>=2){
      float dPhiJet1 = fabs(JetMC[0]->Phi()-JetMC[1]->Phi());    
      if(dPhiJet1> piG) dPhiJet1 = 2*piG -dPhiJet1;
      dPhiJet1 = (180*dPhiJet1)/piG;
      fdPhiGamma1JetMC->Fill(dPhiJet1);
    }
    if(JetMC.size()>=3){
      float dPhiJet2 = fabs(JetMC[0]->Phi()-JetMC[2]->Phi());    
      if(dPhiJet2> piG) dPhiJet2 = 2*piG -dPhiJet2;
      dPhiJet2 = (180*dPhiJet2)/piG;
      fdPhiGamma2JetMC->Fill(dPhiJet2);
    }
    if(JetMC.size()>=4){
      float dPhiJet3 = fabs(JetMC[0]->Phi()-JetMC[3]->Phi());    
      if(dPhiJet3> piG) dPhiJet3 = 2*piG -dPhiJet3;
      dPhiJet3 = (180*dPhiJet3)/piG;
      fdPhiGamma3JetMC->Fill(dPhiJet3);
    }
 

    vector<AssociatedObject> assoJetMC;
    assoJetMC.clear();

    while(JetMC.size()>1){
      int oldSize = JetMC.size();
      vector<TLorentzVector*>::iterator itH = JetMC.begin();
      if((*itH)->Pt()>=ptThreshold){
	for(vector<TLorentzVector*>::iterator it=JetMC.begin();it!=JetMC.end();it++){
	  float azimuthDistanceJet = fabs( (*itH)->Phi() - (*it)->Phi() );
	  if((*it)->Pt()/(*itH)->Pt()>=0.3){
	    if( (piG - rangePhi) <  azimuthDistanceJet && azimuthDistanceJet < (piG + rangePhi)){
	      AssociatedObject tmpPair((*itH),(*it));
	      assoJetMC.push_back(tmpPair);
	      JetMC.erase(it);
	      int newSize = oldSize -1;
	      oldSize = newSize;
	      JetMC.resize(newSize);
	      break;
	    }
	  }
	}
      }
      JetMC.erase(itH);
      int newSize = oldSize -1;
      JetMC.resize(newSize);
    }
  
    if(assoJetMC.size()){
      fNumbMPIMC->Fill(assoJetMC.size());
      vector<AssociatedObject>::iterator at= assoJetMC.begin();
    
      const TLorentzVector* leadingJet((*at).first);
      const TLorentzVector* secondJet((*at).second);

      pPtRatio_vs_PtJleadMC->Fill(leadingJet->Pt(),(secondJet->Pt()/leadingJet->Pt()));
      pPtRatio_vs_EtaJleadMC->Fill(fabs(leadingJet->Eta()),(secondJet->Pt()/leadingJet->Pt()));
      pPtRatio_vs_PhiJleadMC->Fill(leadingJet->Phi(),(secondJet->Pt()/leadingJet->Pt()));
    
      fdEtaLeadingPairMC->Fill(leadingJet->Eta()-secondJet->Eta());
      float dPhiJet = fabs(leadingJet->Phi()-secondJet->Phi());
      if(dPhiJet> piG) dPhiJet = 2*piG -dPhiJet;
      dPhiJet = (180*dPhiJet)/piG;
      fdPhiLeadingPairMC->Fill(dPhiJet);
      fptRatioLeadingPairMC->Fill(secondJet->Pt()/leadingJet->Pt());
    }
    
    fPhiLeadingGammaMC->Fill(GamMC[0]->Phi());
    fPtLeadingGammaMC->Fill(GamMC[0]->Pt());
    fEtaLeadingGammaMC->Fill(GamMC[0]->Eta());
  }

}